CWnd::SetWindowPos
Zmienia rozmiar, położenie i porządek dziecka, wyskakujące i najwyższego poziomu systemu windows.
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags
);
Parametry
pWndInsertAfter
Identyfikuje CWnd obiektu poprzedzający (być wyższe niż) to CWnd obiektu w kolejności Z.Ten parametr może być wskaźnik do CWnd lub wskaźnik do jednego z następujących wartości:wndBottom umieszcza na dole w kolejności z okna.Jeśli to CWnd jest najwyższym okno okno traci swój status najwyższej; system umieszcza okna w dolnej części innych okien.
wndTop umieszcza na górze kolejności z okna.
wndTopMost umieszcza okna przede wszystkim non najwyżej systemu windows.To okno zachowuje najwyższym położeniu nawet wtedy, gdy jest dezaktywowany.
wndNoTopMost zmiana okna do górnej części wszystkich okien najwyższego (to znaczy za wszystkich okien najwyższego).Ta flaga nie ma wpływu, jeśli okno jest już-najwyżej okna.
Zasady dotyczące sposobu korzystania z tego parametru zobacz sekcję "Uwagi" tego tematu.
x
Określa nowe położenie w lewej części okna.y
Określa nowe położenie w górnej części okna.cx
Określa szerokość nowego okna.cy
Określa wysokość nowego okna.nFlags
Określa zmiany rozmiaru i opcje położenia.Ten parametr może być kombinacją następujących flag:SWP_DRAWFRAME rysuje (zdefiniowany podczas tworzenia okna) ramkę wokół okna.
SWP_FRAMECHANGED wysyła WM_NCCALCSIZE komunikat do okna, nawet jeśli rozmiar okna nie są zmieniane.Jeśli ta flaga nie jest określony, WM_NCCALCSIZE jest wysyłana tylko wtedy, gdy zmienia się rozmiar okna.
SWP_HIDEWINDOW ukrywa okno.
SWP_NOACTIVATENie uaktywnia okno.Jeśli ta flaga nie jest ustawiona, okno jest uaktywniona i przenoszone do góry na najwyższym poziomie lub grupy najwyżej (w zależności od ustawień pWndInsertAfter parametr).
SWP_NOCOPYBITS Usuwa całą zawartość obszaru klienta.Jeśli ta flaga nie jest określony, ważne zawartość obszaru klienta są zapisywane i kopiowane do obszaru klienta po oknie jest wielkości i położenia.
SWP_NOMOVEZachowuje bieżące położenie (ignoruje x i y parametry).
SWP_NOOWNERZORDER nie zmienia położenie okna właściciela w kolejności Z.
SWP_NOREDRAW odświeżanie nie zmiany.Jeśli ta flaga jest ustawiona, nie odowieżenie wszelkiego rodzaju występuje.Odnosi się do obszaru klienta, obszar nonclient (w tym paski tytułu i przewijania) i jakiejkolwiek części niewykrytych wyniku przeniesiony okno okno nadrzędne.Ustawienie tej flagi aplikacja musi jawnie unieważnia lub odświeżanie części okna i okna nadrzędnego, który musi zostać odświeżone.
SWP_NOREPOSITION taki sam jak SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING uniemożliwia odbieranie okna WM_WINDOWPOSCHANGING wiadomości.
SWP_NOSIZEZachowuje bieżący rozmiar (ignoruje cx i cy parametry).
SWP_NOZORDERZachowuje bieżący zamawiania (ignoruje pWndInsertAfter).
SWP_SHOWWINDOW Wyświetla okna.
Wartość zwracana
Niezerowa, jeśli funkcja jest pomyślne; w przeciwnym razie 0.
Uwagi
Windows są uporządkowane na ekranie, zgodnie z ich porządek; pojawi się okno w górnej części porządek na wierzchu innych okien w kolejności.
Wszystkie współrzędne okien podrzędnych są współrzędne klienta (względem lewego górnego rogu okna nadrzędnego obszaru klienta).
Okna mogą być przenoszone do góry porządek albo przez ustawienie pWndInsertAfter parametr & wndTopMost oraz zapewnienie, że SWP_NOZORDER jest flaga nie zestawu lub przez ustawienie w oknie 's porządek, dzięki czemu jest powyżej okien najwyższego już istniejących.Po wierzchu okno najwyższego, jego własnością systemu windows są również najwyższym.Jego właścicieli nie są zmieniane.
Okno nie jest już najwyższym, jeśli jest ponownie do dołu (& wndBottom) porządek lub po dowolnego okna najwyższej.Po wierzchu okna nie najwyższej, wszystkie jego właścicieli i jego własnością systemu windows są również-najwyżej systemu windows.
Jeśli ani SWP_NOACTIVATE ani SWP_NOZORDER jest określony (gdy aplikacja żąda okna można jednocześnie aktywowany i umieszczone w określonej kolejności), wartość określona w pWndInsertAfter jest używana tylko w następujących okolicznościach:
Ani & wndTopMost ani & wndNoTopMost jest określona w pWndInsertAfter parametru.
To okno nie jest oknem aktywnym.
Aplikacja nie można uaktywnić nieaktywnego okna bez również dostosowanie do kolejności z góry.Aplikacje można zmienić porządek aktywowany okna, bez ograniczeń.
Najwyższej okno może własne okno, ale nie odwrotnie.Dowolnego okna (na przykład okno dialogowe) posiadanych przez okno składa się najwyżej okno do zapewnienia wszystkich posiadanych windows pobytu powyżej ich właściciela.
Z systemem Windows w wersji 3.1 lub nowszej, systemu windows można przenoszone do góry porządek i tam zablokowany przez ustawienie ich WS_EX_TOPMOST style.Najwyżej okno utrzymuje swoje stanowisko najwyższej, nawet gdy dezaktywowany.Na przykład wybierając polecenie WinHelp zawsze na wierzchu sprawia, że okna pomocy na wierzchu, a następnie pozostaje widoczny po powrocie do aplikacji.
Utworzyć okna najwyższego, call SetWindowPos z pWndInsertAfter parametr równy & wndTopMost, lub WS_EX_TOPMOST stylów podczas tworzenia okna.
Jeśli porządek zawiera wszystkie okna z WS_EX_TOPMOST styl, przeniesione z okna & wndTopMost wartość jest umieszczony u góry wszystkich okien najwyższego, ale poniżej wszystkich okien najwyższego.Gdy aplikacja uaktywnia nieaktywnego okna bez WS_EX_TOPMOST bit, okno jest przenoszone powyżej wszystkich okien najwyższego, ale poniżej wszystkich okien najwyższego.
Jeśli SetWindowPos jest wywoływana, gdy pWndInsertAfter parametr jest & wndBottom i CWnd jest najwyższym okno okno traci swój status najwyższej (WS_EX_TOPMOST jest wyczyszczone), i system umieszcza okna u dołu porządek.
Przykład
void CMyApp::OnHideApplication()
{
//m_pMainWnd is the main application window, a member of CMyApp
ASSERT_VALID(m_pMainWnd);
// hide the application's windows before closing all the documents
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->ShowOwnedPopups(FALSE);
// put the window at the bottom of z-order, so it isn't activated
m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
Wymagania
Nagłówek: afxwin.h