Шаг 121 - CWnd::SetWindowPos

BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );

Отлично от нуля, если функция успешна, иначе 0.

Параметры
pWndInsertAfter
Идентифицирует объект CWnd, который будет предшествовать этому объекту CWnd в Z-порядке. Этот параметр может быть указатель на CWnd или Указатель на одно из следующих значений:

x
Определяет новую позицию левого угла окна.
y
Определяет новую позицию вернего угла окна.
cx
Определяет новую ширину окна.
cy
Определяет новую высоту окна.
nFlags
Определяет установление размеров и позиционирование опций. Этот параметр может быть комбинацией следующих флагов:

Замечания
Вызовите этот метод, чтобы изменить размер, позицию, и Z-порядок дочерних, всплывающих, и верхнего уровня окон
Windows упорядочивает окна на экране согласно их Z-порядку, окно наверху Z-порядка появляется над всеми другими окнами в порядке.
Все координаты для дочерних окон - клиентские координаты (относительно левого верхнего угла клиентской области родительского окна).
Окно может перемещаться в верхнюю часть Z-порядка или, устанавливая pWndInsertAfter параметр для &wndTopMost и гарантируя, что флажок SWP_NOZORDER не установлен или, устанавливая Z-порядок окна так, чтобы оно было выше любых существующих topmost окон. Когда nontopmost окно сделано, topmost, находящиеся в собственности окна также сделаны topmost. Владельцы не изменены.
Topmost окно больше не topmost, если оно снова установлено к нижней части (&wndBottom) Z-порядка или после любого nontopmost окна. Когда topmost окно сделано, nontopmost, все владельцы и находящиеся в собственности окна также сделаны nontopmost окнами.
Если ни SWP_NOACTIVATE ни SWP_NOZORDER не определен (то есть когда приложение просит чтобы окно было одновременно активизировано и помещены в определенном Z-порядке), значение, определенное в pWndInsertAfter используется только в следующих обстоятельствах:

Приложение не может активизировать неактивное окно перемещения его к верхней части Z-порядка. Приложения могут изменять Z-порядок активизированного окна без ограничений.
Nontopmost окно может обладать topmost окном, но не наоборот. Любое окно (например, диалоговое окно) принадлежащий topmost окну самостоятельно сделано topmost окном, чтобы гарантировать, что все находящиеся в собственности окна остаются выше их владельца.
С Windows 3.1 и позже, окна могут перемещаться в верхнюю часть Z-порядка и блокироваться там, устанавливая их WS_EX_TOPMOST стили. Такое topmost окно утверждает, что topmost позиционируют даже когда дезактивировано. Например, выбор команды WinHelp Always On Top делает окно Справки topmost, и затем остается видимо, когда Вы возвращаетесь к вашему приложению.
Чтобы создавать topmost окно, вызовите SetWindowPos с pWndInsertAfter параметром, равным &wndTopMost, или установите WS_EX_TOPMOST стиль, когда Вы создаете окно. Если Z-порядок содержит любые окна с WS_EX_TOPMOST стилем, окно, перемещаемое с &wndTopMost, значение помещено наверху всех nontopmost окон, но ниже любых topmost окон. Когда приложение активизирует неактивное окно без WS_EX_TOPMOST бита, окно перемещается прежде всего nontopmost окна, но ниже любых topmost окон.
Если SetWindowPos вызывается, когда pWndInsertAfter параметр - &wndBottom, и CWnd - topmost окно, окно теряет topmost состояние (, очищен), и система помещает окно на дне Z-порядка.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.