Дочернее окно, созданное CreateEx (), перекрывается родственными окнами - PullRequest
1 голос
/ 29 февраля 2012

Я попытался создать дочернее окно, используя:

CreateWindowEx( NULL, NULL, "MyChild", WS_CHILD | WS_VISIBLE | WS_BORDER, 300, 300, 400, 200, hParentWnd, NULL, NULL );

где родительский HWND hParentWnd уже имеет много других дочерних окон. Однако это создало дочернее окно, скрывающееся за всеми братьями и сестрами. Windows Spy ++ показывает, что он находится сверху (первым) z-порядка среди дочерних окон hParentWnd. Я перепробовал все различные команды win32, включая SetWindowPos(), BringWindowToTop(), SetForegroundWindow(), SetFocus(), SetActiveWindow(), SendMessage(WM_ACTIVATE, 0, 0) и т. Д., Но ни одна из них не принесла его из-за братьев и сестер. Когда я заменил WS_CHILD на WS_OVERLAPPEDWINDOW в команде CreateWindowEx(), созданное не дочернее окно без проблем отображается как самое верхнее переднее активное окно. Так, что я должен сделать, чтобы получить дочернее окно к вершине позади родных братьев?

Спасибо миллион.

* * 1016 г / 0

1 Ответ

1 голос
/ 29 февраля 2012

Это довольно явно в статье MSDN для CreateWindowEx ():

Если созданное окно является дочерним окном, его позиция по умолчанию находится в основании Z-порядок.Если созданное окно является окном верхнего уровня, его позиция по умолчанию находится в верхней части Z-порядка.

Вам необходимо переместить его в верхнюю часть Z-порядка с помощью SetWindowPos().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...