SetWindowPos

Funkcja SetWindowPos zmienia rozmiar, położenie i kolejności z okna wyskakujące lub najwyższego poziomu dziecka. Dziecko, okien podręcznych i najwyższego poziomu są sortowane zgodnie z ich wygląd na ekranie. Okno otrzymuje najwyższą rangę i jest pierwszym oknie w kolejności z.

 (BOOL SetWindowPos HWND  hWnd, / / dojście do oknaHWNDhWndInsertAfter, / / obsługi położenia zamówienieint X, / / pozioma pozycjaint Y, / / pionowe położenie int cx, // width int cy, // heightUINTuFlags / / pozycjonowania okna flagi);
 

Parametry

hWnd
Dojście do okna.
hWndInsertAfter
Dojście do okna może poprzedzać okna pozycjonowane w kolejności Z. Ten parametr musi być uchwyt okna lub jedna z następujących wartości:
Wartość Znaczenie
HWND_BOTTOM Umieszcza okna na dole współrzędną. Jeśli parametr hWnd identyfikuje okno, okno straci swój status wierzchu i jest umieszczany na dole wszystkich innych okien.
HWND_NOTOPMOST Umieszcza okna przede wszystkim brak najwyższej windows (oznacza to, że za wszystkich okien najwyższego). Ta flaga ma znaczenia, jeśli okno jest już-najwyższej okna.
HWND_TOP Umieszcza okno w górnej części współrzędną.
HWND_TOPMOST Umieszcza okna przede wszystkim brak najwyższej systemu windows. Okno utrzymuje swoje stanowisko dotyczące wierzchu, nawet wtedy, gdy jest dezaktywowany.

Aby uzyskać więcej informacji na temat używania tego parametru zobacz następującą sekcję Uwagi.

X
Określa nowe położenie w lewej części okna, zgodnie ze współrzędnymi klienta.
Y
Określa nowe położenie górnej części okna, zgodnie ze współrzędnymi klienta.
cx
Określa nową szerokość okna w pikselach.
cy
Określa wysokość nowego okna w pikselach.
uFlags
Określa okno zmiany rozmiaru i położenia flagi. Ten parametr może być kombinacją następujących wartości:
Wartość Znaczenie
SWP_ASYNCWINDOWPOS Jeśli wywołujący wątku nie jest właścicielem okna, system zaksięguje wniosek do wątku, który jest właścicielem okna. Zapobiega to wywołanie wątku blokowanie jego wykonanie, podczas gdy inne wątki przetworzyć żądania.
SWP_DEFERERASE Zapobiega generowanie wiadomości WM_SYNCPAINT.
SWP_DRAWFRAME Rysuje ramki (zdefiniowana w oknie klasy opis) wokół okna.
SWP_FRAMECHANGED Wysyła komunikat WM_NCCALCSIZE aby oknie, nawet jeśli nie jest przy zmianie rozmiaru okna. 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_NOACTIVATE Nie Uaktywnij okno. Jeśli ta flaga nie jest ustawiona, okno jest aktywowana i przeniósł się do górnej części albo grupy najwyższego lub najwyższej (w zależności od ustawienia parametru hWndInsertAfter ).
SWP_NOCOPYBITS Usuwa całą zawartość obszaru klienckiego. Jeśli ta flaga nie jest określony, ważne zawartość obszaru klienta są zapisywane i kopiowane do obszaru klienckiego po oknie jest wielkości i położenia.
SWP_NOMOVE Zachowuje bieżący stanowiska (ignoruje parametry x i Y ).
SWP_NOOWNERZORDER Zmienia położenie okna właściciela w kolejności z.
SWP_NOREDRAW Nie Przerysowuje zmiany. Jeśli ta flaga będzie ustawiona, nie odowieżenie wszelkiego rodzaju występuje. Odnosi się to do obszaru klienta, obszar nonclient (włączając w to pasek tytułu i pasków przewijania) i jakiejkolwiek części okna nadrzędnego bez przykrycia z okna przenoszone. Jeśli ta flaga będzie ustawiona, aplikacja musi jawnie unieważnia lub odświeżyć wszystkie części okna, a okno nadrzędne, że ponowne rysowanie.
SWP_NOREPOSITION Sam jako flaga SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Zapobiega odbieraniu wiadomości WM_WINDOWPOSCHANGING okna.
SWP_NOSIZE Zachowuje bieżący rozmiar (ignoruje parametry cx i cy ).
SWP_NOZORDER Zachowuje bieżący współrzędną (ignoruje parametr hWndInsertAfter ).
SWP_SHOWWINDOW Wyświetla okno.

Zwraca wartości

Jeśli funkcja, wartość zwracany jest różna od zera.

Jeśli funkcja zawiedzie, wartość zwracany jest równa zero. Aby uzyskać rozszerzonych informacji o błędach, należy wywołać GetLastError.

Uwagi

Jeśli jest ustawiona flaga SWP_SHOWWINDOW lub SWP_HIDEWINDOW, okna nie mogą być przenoszone ani wielkości.

Jeśli uległy zmianie pewnych danych okno za pomocą SetWindowLong, należy wywołać SetWindowPos mieć efekt wprowadzonych zmian. Użyj następujących kombinacji dla uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Okna można wprowadzić okno, przez ustawienie parametru hWndInsertAfter do HWND_TOPMOST oraz zapewnienie, że nie jest ustawiona flaga SWP_NOZORDER, albo przez ustawienie położenie okna w kolejności Z, tak aby była ona powyżej wszelkich istniejących windows najwyższego. Najwyższej okno zrealizowaniu wierzchu, jego własnością systemu windows są również najwyższej. Jego właścicieli, jednak nie są zmieniane.

Jeśli flaga SWP_NOACTIVATE ani SWP_NOZORDER jest określony (oznacza to, że gdy aplikacja żąda, aby oknie jednocześnie aktywować i zmienił swoje stanowisko w kolejności Z), wartość określona w hWndInsertAfter jest używana tylko w następujących okolicznościach:

Aplikacja nie może uaktywnić okna nieaktywnego bez również doprowadzania do góry współrzędną. Aplikacje można zmienić położenie aktywnego okna w kolejności z bez ograniczeń, lub można uaktywnić okno i następnie przenieść go do górnej części okna najwyższego lub najwyższej.

Jeśli okno jest położenie do dołu (HWND_BOTTOM) współrzędną lub po dowolnego okna najwyższy, już jest najwyżej. Gdy okno jest niż najwyższy, jego właścicieli i jego własnością systemu windows zostaną wykonane-najwyższej systemu windows.

Najwyższej okna można własne okno, ale odwrotnie nie może występować. Wszystkie okna (na przykład okno dialogowe) posiadane przez okno jest dokonywane okno, aby zapewnić wszystkie posiadane windows pobytu powyżej ich właściciela.

Jeśli aplikacja nie jest na pierwszym planie i powinny być na pierwszym planie, należy wywołać funkcję SetForegroundWindow.

Systemu Windows CE: Jeśli jest to widoczne okno najwyższego poziomu, a nie określono flagę SWP_NOACTIVATE, ta funkcja będzie Uaktywnij okno. Jeśli jest aktualnie aktywnego okna, a nie określono flagę SWP_NOACTIVATE lub Flaga SWP_HIDEWINDOW, aktywacji jest przekazywane innym widocznego okna najwyższego poziomu.

Po ustawieniu flagi SWP_FRAMECHANGED w parametrze nFlags do tej funkcji Windows CE odrysowania cały obszar-klient okna, która może zmienić rozmiar obszaru klienckiego. To jest jedynym sposobem uzyskania obszaru klienta nie mają zostać ponownie obliczone i jest zazwyczaj używany po chcesz zmienić styl okna przez wywołanie SetWindowLong.

SetWindowPos zawsze spowoduje komunikat WM_WINDOWPOSCHANGED ma być wysłany do okna. Flagi przekazywane w tej wiadomości są dokładnie takie same, jak te, które są przekazywane do funkcji. Nie inne wiadomości są wysyłane przy użyciu tej funkcji.

Windows CE 1.0 nie obsługuje stałe HWND_TOPMOST i HWND_NOTOPMOST w parametrze hwndInsertAfter.

Windows CE 1.0 nie obsługuje flag SWP_DRAWFRAME lub SWP_NOCOPYBITS w fuFlags paramete.

Skrócone informacje

nbsp; Windows &NT: wymagana wersja 3.1 lub nowsza.
Systemu Windows:Wymaga systemu Windows 95 lub nowszego.
Systemu Windows CE:Wymaga wersja 1.0 lub nowsza.
Nagłówka:Zadeklarowane w pliku winuser.h.
Importowanie biblioteki:Użycie user32.lib.

Zobacz też

Omówienie Windows, okno funkcji, MoveWindow, SetActiveWindow, SetForegroundWindow

Index