Поделиться через


CWnd::SetWindowPos

Изменяет размер, положения и z-порядок дочернего элемента контекстного меню и окна верхнего уровня.

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

Параметры

  • pWndInsertAfter
    Указывает объект CWnd, который будет указывать (более высоком уровне, чем) этот объект CWnd в соответствии с z-порядком.Этот параметр может быть указателем на CWnd или Указатель одно из следующих значений:

    • wndBottom Задает окно в нижней части z-порядка.Если это CWnd верхнее окно, окно теряет его верхний состояние; система устанавливает окно в конце всех других окон.

    • wndTop Задает поле в верхней части z-порядка.

    • wndTopMost Устанавливает окна выше всего, самым верхним.Окно поддерживает свою верхнее положение даже при деактивации.

    • wndNoTopMost Перемещает окно в верхней части всех окон, верхний (то есть за всеми окнами переднего плана).Этот пометить не действует, если окно является самым верхним, уже окно.

    Для правил об использовании этого параметра см. в подразделе "примечания" этого раздела.

  • x
    Определяет новую позицию левого края окна.

  • y
    Указывает новое положение верхней части окна.

  • cx
    Определяет новую ширину окна.

  • cy
    Определяет новую высоту окна.

  • nFlags
    Задает параметры для изменения размера и размещения.Этот параметр может быть сочетанием следующих флаги:

    • SWP_DRAWFRAME Рисует указанный кадр (когда окно было создано) вокруг окна.

    • SWP_FRAMECHANGED Отправляет сообщение в окно WM_NCCALCSIZE, даже если не изменить размер окна.Если этот пометить не указан, то WM_NCCALCSIZE отправлено только при изменении размера окна.

    • SWP_HIDEWINDOW Скрывает окно.

    • SWP_NOACTIVATE не активировать.Если этот пометить не установлен, то окно активировано и перемещено к верхней части или верхний или группы, верхний (в зависимости от значения параметра pWndInsertAfter ).

    • SWP_NOCOPYBITS Отменяет все содержимое клиентской области.Если этот пометить не указан, то допустимые содержимое клиентской области сохранены и копируются обратно в клиентскую область после того, как определено или перемещено окно.

    • SWP_NOMOVE сохраняет текущую позицию (не учитывает параметры x и y ).

    • SWP_NOOWNERZORDER Не изменяет позицию окна владельцем в соответствии с z-порядком.

    • SWP_NOREDRAW Перерисовывать изменения.Если этот пометить установлен, то обновления не происходит никакой любого типа.Это применяется к клиентской области, неклиентской области (включая заголовок, а полосы прокрутки) и любой части родительского окна расчехленного в результате перемещаемого окна.Если пометить установлен, то приложение должно явно недействительным или перерисовывает себя все части окна и родительского окна, должен перерисовать.

    • SWP_NOREPOSITION Такие же, как SWP_NOOWNERZORDER.

    • SWP_NOSENDCHANGING Предотвращает окно из получения сообщения WM_WINDOWPOSCHANGING.

    • SWP_NOSIZE сохраняет текущий размер (не учитывает параметры cx и cy ).

    • Сохраняет порядок SWP_NOZORDER текущего (пропускает pWndInsertAfter).

    • SWP_SHOWWINDOW Отображает окно.

Возвращаемое значение

Ненулевой если функция успешно; в противном случае – значение 0.

Заметки

Windows ordered на экране в соответствии с их z-порядком; окно в верхней части z-порядка появляется поверх других окон.

Все координаты для дочерних окон клиентские координаты (верхн- относительно верхнего левого угла клиентской области родительского окна). 

Окно можно переместить в верхней части z-порядка любой с помощью параметра pWndInsertAfter к &wndTopMost и пометить SWP_NOZORDER не установлен или путем установки z-порядком окна таким образом, чтобы он будет над любыми существующими верхний окнами.Если верхнее окно переднего плана, выполняется его задаются также принадлежащие окна переднего плана.Его владельцы не изменены.

Верхнее окно больше не является самым верхним, если он перемещено в нижнюю часть z-порядка (&wndBottom) или после любого окна переднего плана, не являющихся.Верхнее окно выполняется, когда верхний, отличного от, все ее владельцев окон и его, принадлежащих задаются также не самый верхний окнами.

Если ни SWP_NOACTIVATE определены ни SWP_NOZORDER (т е если приложение запрашивает, чтобы окно одновременно было активировано и размещается в заданном z-порядок), то значение, указанное в pWndInsertAfter используется только в следующих случаях:

  • Ни &wndTopMost ни &wndNoTopMost указанные в параметре pWndInsertAfter.

  • Это окно не активного окна.

Приложение не может активировать неактивное окно без приносить его в верхнюю часть z-порядка.Приложения могут изменять z-порядок активированного окна без ограничений.

Верхнее окно не может содержать самое верхнее окно, но не наоборот.Любое окно (например, диалоговое окно окном переднего плана), принадлежащая самим делается окном переднего плана, чтобы убедиться, что все собственные окна продолжают отображаться над их владелец.

С версиями Windows 3,1 и более поздних версий, окна можно переместить в верхней части z-порядка, размещая их блокирования и их стили WS_EX_TOPMOST.Такое верхнее окно поддерживает свою верхнее положение, даже если выключенный.Например, выбрав команду Поверх других окон WinHelp делает окно Справки, верхний и затем он остается видимой при возврате к приложению.

Создание верхнее окно, вызов SetWindowPos с параметром pWndInsertAfter равно &wndTopMost или задать стиль WS_EX_TOPMOST при создании окна.

Если z-порядок содержит какие-либо окна с учетом WS_EX_TOPMOST, то окно перемесщенное со значением все &wndTopMost размещается в верхней части окна переднего плана, но не во всех верхний окнами.Когда приложение активировать неактивное окно без бита WS_EX_TOPMOST окно перемесщенные выше всего окна переднего плана, но во всех верхний окнами.

Если SetWindowPos вызываются если параметр pWndInsertAfter**&wndBottom** и CWnd верхнее окно, окно теряет состояние (WS_EX_TOPMOST его верхний очищено), и система устанавливает окно в нижней части z-порядка.

Пример

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);
}

Требования

Header: afxwin.h

См. также

Ссылки

Класс CWnd

Диаграмма иерархии

DeferWindowPos

SetWindowPos