SetWindowPos

Функція SetWindowPos змінює розмір, розташування та z порядку дитини, спливаючих елементів або верхнього рівня вікна. Дитина, спливаюче і верхнього рівня windows відсортовані відповідно до їх появи на екрані. Вікно верхнього отримує вищого рангу а перше вікно в Z-послідовності.

 (BOOL SetWindowPos HWND  hWnd, / / ручка вікнаHWNDhWndInsertAfter, / / ручка розміщення замовленняInt X, / / горизонтальна позиціяInt Y, / / вертикальну позицію int cx, // width int cy, // heightUINTuFlags / / вікно позиціонування прапори);
 

Параметри

hWnd
Обробляти до вікна.
hWndInsertAfter
Обробляти до вікна передувати вікна розташовані в Z-послідовності. Цей параметр має бути дескриптор вікна, або один з таких значень:
Значення Значення
HWND_BOTTOM Розташовує вікно в нижній частині Z-послідовності. Якщо параметр hWnd визначає найвищого вікно, вікно втрачає свого найвищого статусу і знаходиться в нижній частині всіх інших вікон.
HWND_NOTOPMOST Розташовує вікна перш за все не найвищий windows (тобто, позаду всіх найвищого windows). Цей прапор має ніякого ефекту, якщо вікно вже-найвищий вікно.
HWND_TOP Розташовує вікна у верхній частині Z-послідовності.
HWND_TOPMOST Розташовує вікна перш за все не найвищий windows. Вікна утримується його верхню позицію, навіть тоді, коли вона буде деактивовано.

Щоб отримати додаткові відомості про те, як використовувати цей параметр перегляньте розділ такі зауваження.

X
Визначає нові положення в лівій частині вікна, у клієнта координати.
Y
Задає нові позиції у верхній частині вікна, клієнт координати.
cx
Визначає Нова ширина вікна, у пікселях.
cy
Визначає висоту нового вікна, у пікселях.
uFlags
Визначає вікні розмір і розташування позначки. Цей параметр може бути поєднання таких значень:
Значення Значення
SWP_ASYNCWINDOWPOS Якщо IP-телефонії потік не вікно, система посади запит на потік, який володіє вікна. Це запобігає виклику тема блокує його виконання, у той час як інші теми обробити запит.
SWP_DEFERERASE Запобігає покоління WM_SYNCPAINT повідомлення.
SWP_DRAWFRAME Малює рамки (визначені в клас у вікні Опис) навколо вікна.
SWP_FRAMECHANGED Надсилає повідомлення WM_NCCALCSIZE вікна, навіть якщо не будучи змінюється розмір вікна. Якщо не вказано цей прапор, WM_NCCALCSIZE надсилається лише тоді, коли змінюється розмір вікна.
SWP_HIDEWINDOW Приховування вікна.
SWP_NOACTIVATE Не вдалося активувати вікно. Якщо не встановлено цю позначку, у вікні активується і переїхав до початку або верхній або найвищий групи (в залежності від значення параметра hWndInsertAfter ).
SWP_NOCOPYBITS Видаляє весь вміст області клієнта. Якщо не вказано цей прапор, дійсний вміст області клієнта зберігаються й скопійовані назад в області клієнта після вікна розміром або переміщено.
SWP_NOMOVE Зберігає поточну позицію (ігнорує параметри x та Y ).
SWP_NOOWNERZORDER Не змінити власника вікно позицію в Z-послідовності.
SWP_NOREDRAW Не перемальовування зміни. Якщо цей прапор, немає фарбування будь-якого відбувається. Це стосується клієнтської області, nonclient області (в тому числі заголовку та смуги прокручування), і будь-якій частині вікна батьківського виявили з вікна, будучи переїхали. Коли встановлено цю позначку, застосунок має явно недійсними або перемальовування будь-якої частини вікно та вікно з батьків, які повинні перемальовування.
SWP_NOREPOSITION Так само, як прапор SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Запобігає вікна повідомлення WM_WINDOWPOSCHANGING.
SWP_NOSIZE Зберігає поточний розмір (ігнорує cx і cy параметри).
SWP_NOZORDER Зберігає поточний Z-послідовності (ігнорує параметра hWndInsertAfter ).
SWP_SHOWWINDOW Відображає вікно.

Повернення значень

Якщо функція завершено успішно, значення, що повертається, є ненульовим.

Якщо функцію не вдається, значення дорівнює нулю. Щоб отримати докладні відомості про помилку, зателефонуйте GetLastError.

Зауваження

Якщо SWP_SHOWWINDOW або SWP_HIDEWINDOW прапор, вікна не переміщено або розміром.

Якщо ви змінили деякі вікна даних за допомогою SetWindowLong, ви повинні викликати SetWindowPos , щоб зміни набули сили. Використання таких за uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Вікно може бути зроблено найвищого вікно, установивши параметр hWndInsertAfter HWND_TOPMOST і забезпечення того, що SWP_NOZORDER прапор не установлено або встановивши у вікно позицію в Z-послідовності, так, щоб будь-який верхнього вікна. Після-найвищий вікно верхнього свого належить windows також зроблені найвищого. Його власників, однак, не змінюються.

Якщо ні SWP_NOACTIVATE, ні SWP_NOZORDER прапор вказано (тобто, коли застосування запитує, що одночасно можна активувати вікно і змінили свою позицію в Z-послідовності), значення, вказаного в hWndInsertAfter використовується тільки в нижче обставин:

Застосунку не вдалося активувати неактивного вікна без також приведення її у верхню частину порядку Z. Додатки можна змінити активованого вікно позицію в Z-послідовності без обмежень, або його можна активувати вікно а потім перемістити його на початок верхнього або найвищий windows.

Якщо найвищого вікно змінює своє положення в нижній (HWND_BOTTOM) Z порядку, або після будь-якого-найвищий вікна, це не найвищий. Після найвищого вікно non найвищий його власників і його власності windows також зроблені-найвищий windows.

Найвищий вікно може володіти верхнього вікна, але реверс не може статися. Будь-яке вікно (наприклад, у діалоговому вікні), належать найвищому вікно є сам зробив верхнього вікна, щоб переконатися, що все у власності windows залишатися над їх власника.

Якщо програма не на передньому плані і повинна бути на передньому плані, він повинен викликати функцію SetForegroundWindow.

Windows CE: Якщо це відображається вікно верхнього рівня, а SWP_NOACTIVATE прапор не вказано, ця функція буде активувати вікно. При цьому в даний час активного вікна, і вказано або прапор SWP_NOACTIVATE або SWP_HIDEWINDOW прапор, активація передається на інший видно вікно верхнього рівня.

Під час встановлення SWP_FRAMECHANGED прапор у nFlags параметр функції Windows CE Перемальовує весь район-клієнт вікна, які можуть змінити розмір області клієнта. Це єдиний спосіб отримати області-клієнт, щоб переобчислити і зазвичай використовується після на змінення стиль вікна, зателефонувавши SetWindowLong.

SetWindowPos завжди буде причиною WM_WINDOWPOSCHANGED повідомлення буде відправлено до вікна. Прапори, які пройшли в це повідомлення є точно так само, як ті, що пройшло в функцію. Ні інші повідомлення надсилаються цю функцію.

Windows CE 1.0 не підтримує HWND_TOPMOST і HWND_NOTOPMOST константи в параметрі hwndInsertAfter.

Windows CE 1.0 не підтримує SWP_DRAWFRAME або SWP_NOCOPYBITS позначки в fuFlags paramete.

QuickInfo

nbsp; Windows &NT: вимагає 3.1 або пізнішої версії.
Windows:Вимагає Windows 95 або пізнішої версії.
Windows CE:Потрібна Версія 1.0 або пізнішу версію.
Заголовка:Оголошена в winuser.h.
Імпортувати бібліотеки:Використання user32.lib.

Дивіться також

Windows огляд, функції вікон, MoveWindow, SetActiveWindow, SetForegroundWindow

Index