Как я могу заставить мой MessageBox всплывать поверх всех форм? - PullRequest
0 голосов
/ 28 марта 2011

В настоящее время я предоставляю информацию пользователю с помощью окна сообщения в моей C-программе, но окно сообщения появляется за всеми другими формами моего приложения.

Как я могу выдвинуть его так, чтобы он отображался перед всеми моими формами, или установить его родителя?

Вот код, который я сейчас использую для отображения окна сообщения:

MessageBox(0,error_msg, "Error - No Algorithm", MB_OK );

Ответы [ 3 ]

2 голосов
/ 28 марта 2011

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

Решение, как вы подозреваете, состоит в том, чтобы указать одно из ваших окон в качестве владельца окна сообщения. Это можно сделать, указав их дескриптор окна (HWND) в качестве первого аргумента функции:

MessageBox(hWnd,                    // the window handle for your owner window
           error_msg,               // the message to be displayed
           "Error - No Algorithm",  // the title
           MB_OK);                  // flags indicating contents and behavior

Документация предоставляет дополнительную информацию.

0 голосов
/ 24 апреля 2012

Позднее, но просто ищите окно по классу или названию, используя FindWindow и предоставьте HWND в качестве первого параметра для MessageBox.

0 голосов
/ 28 марта 2011

Первый параметр MessageBox - это HWND для родителя. 0 или NULL означает «нет родителя», поэтому результирующее окно сообщения не будет модальным. Вам нужно предоставить родительский HWND, чтобы получить желаемое поведение.

...