Как сделать верхнее дочернее окно? - PullRequest
1 голос
/ 13 мая 2010

У меня есть родительская форма с некоторыми дочерними окнами (не формами - просто окна, например, элементы управления надписями) внутри. При определенных обстоятельствах я хочу, чтобы одно из этих дочерних окон отображалось «над» другими, чтобы отображалось сообщение по всей основной форме.

Я пытался установить HWND_TOPMOST и HWND_TOP в дочерних окнах, но, похоже, это никак не сказалось. Я делаю что-то не так или HWND_TOPMOST и HWND_TOP работают только с формами, а не с элементами управления внутри форм?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

HWND_TOPMOST применяется только к окнам верхнего уровня, а не к дочерним окнам.

Используйте SetWindowPos с флагом HWND_TOP, чтобы изменить zorder целевого дочернего окна, чтобы поместить его в вершину zorder среди его родных элементов.

Обратите внимание, что zorder в дочерних окнах относится только к братьям и сестрам - hwnds с одним и тем же родителем.

2 голосов
/ 26 апреля 2016

Я столкнулся с этой проблемой, когда хотел поместить элемент управления полосой прокрутки поверх всех дочерних окон.

Мое решение было:

  1. Используйте WS_CLIPSIBLINGS для всех дочерних окон. Это предотвращает перерисовку перекрывающихся областей родственных окон.
  2. Используйте SetWindowPos с HWND_TOP для hWndInsertAfter, чтобы поместить его поверх других элементов управления.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...