Заставьте MessageBox оставаться поверх других окон - PullRequest
3 голосов
/ 20 июня 2010

У меня есть TimerProc, который вызывает MessageBox.Я хочу, чтобы MessageBox оставался поверх других окон.Так, например, родительское окно устанавливает таймер, затем я перемещаю другое окно поверх этого.Когда таймер срабатывает, я хочу, чтобы MessageBox появился в верхней части окна, которое покрывает приложение.Возможно ли это, и как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 20 июня 2010

Я думаю, что вы хотите сделать это System Modal как MB_SYSTEMMODAL, как описано здесь .

И / или сделать окно, которое находится сверху, владельцем MessageBox.

2 голосов
/ 20 июня 2010

Вам нужно то же самое окно сообщения, которое уже открыто, чтобы перейти наверх?Или новый, открывающийся над другими окнами?

Если вы хотите, чтобы тот же MessageBox, который уже открыт, только что поднялся наверх:

Я думаю, вы можетеполучите MessageBox дескриптор окна, если вы используете EnumThreadWindows, но я никогда не пробовал сам.Так что, если это сработает, вы можете использовать его дескриптор окна при вызове BringWindowToTop.

Если получение дескриптора MessageBox вам не подходит, вы можете просто создать собственное окно, которое будет выглядеть как окно сообщения.и затем вместо этого вызовите BringWindowToTop.

Если вы хотите, чтобы всплывающий новый MessageBox находился сверху:

Если вы хотите новый MessageBox каждый раз, когда вы можете использоватьФлаг MB_SYSTEMMODAL, как описано в документации MessageBox .MB_TOPMOST считается игнорируемым в Vista и выше.

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