Функция MessageBox
Теперь, когда вы знаете, что такое модальные и немодальные диалоговые панели, вспомним о нашем старом друге - функции MessageBox, с которой вы начали изучение программного интерфейса Windows:
int WINAPI MessageBox(HWND hwndParent, LPCSTR lpszText, LPCSTR lpszTitle, UINT fuStyle);
Напомним, что эта функция создает на экране диалоговую панель с текстом, заданным параметром lpszText и заголовком, заданным параметром lpszTitle. Если заголовок указан как NULL, используется заголовок по умолчанию - строка "Error".
Параметр hwndParent указывает идентификатор родительского окна, создающего диалоговую панель. Этот параметр можно указывать как NULL, в этом случае у диалоговой панели не будет родительского окна. Вы можете вызвать функцию MessageBox из функции диалога, в этом случае первый параметр должен содержать идентификатор окна диалоговой панели.
Последний параметр fuStyle определяет стиль и внешний вид диалоговой панели. Вы можете использовать одну из следующих констант, определяющих количество кнопок, расположенных на диалоговой панели и надписи на этих кнопках.
Константа | Описание |
MB_ABOTRETRYIGNORE | Диалоговая панель содержит три кнопки с надписями "Abort", "Retry", "Ignore" |
MB_OK | Диалоговая панель содержит одну кнопку "OK" |
MB_OKCANCEL | Две кнопки с надписями "OK", "Cancel" |
MB_RETRYCANCEL | Две кнопки с надписями "Retry", "Cancel" |
MB_YESNO | Две кнопки с надписями "Yes", "No" |
MB_YESNOCANCEL | Три кнопки с надписями "Yes", "No", "Cancel" |
К этим константам при помощи логической операции ИЛИ можно добавлять другие константы.
По умолчанию после инициализации диалоговой панели фокус ввода имеет первая кнопка. Эта кнопка будет использована по умолчанию. Вы можете определить в качестве кнопки, используемой по умолчанию любую из трех кнопок с помощью следующих констант:
Константа | Описание |
MB_DEFBUTTON1 | Первая кнопка используется по умолчанию |
MB_DEFBUTTON2 | Вторая кнопка используется по умолчанию |
MB_DEFBUTTON3 | Третья кнопка используется по умолчанию |
С помощью следующих трех констант вы можете влиять на модальность диалоговой панели:
Константа | Описание |
MB_APPLMODAL | Создается модальная диалоговая панель. Окно, указанное параметром hwndParent, переводится в неактивное состояние до тех пор, пока пользователь не завершит работу с диалоговой панелью. Пользователь может переключиться на другое приложение. Этот стиль используется по умолчанию |
MB_SYSTEMMODAL | До тех пор, пока пользователь не завершит работу с диалоговой панелью, все остальные приложения переводятся в неактивное состояние |
MB_TASKMODAL | Аналогично MB_APPLMODAL за исключением того, что если параметр hwndParent имеет значение NULL, блокируются все окна верхнего уровня, принадлежащие данной задаче. Этот стиль используется тогда, когда идентификатор родительского окна неизвестен, но тем не менее требуется перевести все окна текущего приложения в неактивное состояние до тех пор, пока пользователь не завершит работу с диалоговой панелью |
Константа | Внешний вид пиктограммы |
MB_ICONASTERISK | |
MB_ICONEXCLAMATION | |
MB_ICONHAND | |
MB_ICONINFORMATION | |
MB_ICONQUESTION | |
MB_ICONSTOP |
Константа | Название кнопки |
IDABORT | "Abort" |
IDCANCEL | "Cancel" |
IDIGNORE | "Ignore" |
IDNO | "No" |
IDOK | "OK" |
IDRETRY | "Retry" |
IDYES | "Yes" |