Как заставить AfxMessageBox центрироваться на мэйнфрейме, а не на любом дочернем окне, которое в данный момент имеет фокус - PullRequest
0 голосов
/ 07 октября 2010

Я разрабатываю приложение MDI, основной документ развернут в кадре MDI.Я создаю немодальное диалоговое окно для отображения дополнительной информации для пользователя, пока он работает в главном окне.Однако, когда пользователь перемещает всплывающее окно, оно получает фокус, который ожидается.Проблема возникает, когда это окно имеет фокус, и в мейнфрейме происходит событие, которое генерирует AfxMessageBox.Я ожидаю, что AfxMessageBox будет всплывать в центре мэйнфрейма.В настоящее время он всплывает в центре немодального всплывающего окна диалога, которое, случайно, имело фокус в это время.

Есть ли способ заставить AfxMessageBox всегда всплывать в центре мэйнфрейма?Или, по крайней мере, заставить его всплывающее окно в центре окна, в котором он был вызван.Например, если в моем немодальном диалоге возникает ошибка, я бы хотел, чтобы AfxMessageBox отображался в центре этого диалога, потому что интуитивно понятно, что ошибка произошла там.В качестве альтернативы, если я работаю с немодальным диалоговым окном, и в мейнфрейме или документе возникает ошибка, то я бы хотел, чтобы AfxMessageBox отображался по центру его представления / фрейма, несмотря на то, что я сейчас работаю с дочерним окном.

Надеюсь, это достаточно ясно.

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Вместо этого используйте метод CWnd :: MessageBox ().

3 голосов
/ 07 октября 2010

Продолжайте использовать AfxMessageBox, но переопределяйте DoMessageBox вашего подкласса CWinApp.В переопределении делайте все, что хотите, чтобы отобразить окно сообщения для пользователя, используя ::MessageBox() или даже отображая пользовательское диалоговое окно.Это избавляет вас от замены вызовов на AfxMessageBox в файлах исходного кода.

0 голосов
/ 07 октября 2010

Можете ли вы использовать вместо стандартного :: MessageBox с первым (родительским) параметром, равным NULL.В этом случае рабочий стол будет использоваться в качестве родительского, поэтому он будет находиться по центру экрана.

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