Функция MessageBoxW (winuser.h)
Отображает модальное диалоговое окно, содержащее системный значок, набор кнопок и краткое сообщение для конкретного приложения, например сведения о состоянии или ошибке. Поле сообщения возвращает целочисленное значение, указывающее, какая кнопка щелкнула пользователя.
Синтаксис
int MessageBoxW(
[in, optional] HWND hWnd,
[in, optional] LPCWSTR lpText,
[in, optional] LPCWSTR lpCaption,
[in] UINT uType
);
Параметры
[in, optional] hWnd
Тип: HWND
Дескриптор окна владельца создаваемого окна сообщения. Если этот параметр null, окно сообщения не имеет окна владельца.
[in, optional] lpText
Тип: LPCTSTR
Отображаемое сообщение. Если строка состоит из нескольких строк, можно разделить строки с помощью возвращаемого каретки и /или символа линии между каждой строкой.
[in, optional] lpCaption
Тип: LPCTSTR
Заголовок диалогового окна. Если этот параметр NULL, заголовок по умолчанию — ошибка.
[in] uType
Тип: UINT
Содержимое и поведение диалогового окна. Этот параметр может быть сочетанием флагов из следующих групп флагов.
Чтобы указать кнопки, отображаемые в окне сообщения, укажите одно из следующих значений.
Чтобы отобразить значок в окне сообщения, укажите одно из следующих значений.
Чтобы указать кнопку по умолчанию, укажите одно из следующих значений.
Чтобы указать модальность диалогового окна, укажите одно из следующих значений.
Чтобы указать другие параметры, используйте одно или несколько следующих значений.
Ценность | Значение |
---|---|
|
То же, что и рабочий стол интерактивной станции окон. Дополнительные сведения см. в станциях окон.
Если текущий рабочий стол ввода не является рабочим столом по умолчанию, MessageBox не возвращается, пока пользователь не переключается на рабочий стол по умолчанию. |
|
Текст оправдан правильно. |
|
Отображает текст сообщения и заголовка с помощью порядка чтения справа налево на иврите и арабском языках. |
|
Окно сообщения становится окном переднего плана. Внутри системы вызывается функция SetForegroundWindow для поля сообщения. |
|
Окно сообщения создается с помощью стиля окна WS_EX_TOPMOST. |
|
Вызывающий объект — это служба, уведомляющая пользователя о событии. Функция отображает окно сообщения на текущем активном рабочем столе, даже если на компьютере нет пользователя.
службах терминалов: Если вызывающий поток имеет маркер олицетворения, функция направляет поле сообщения в сеанс, указанный в маркере олицетворения. Если этот флаг задан, параметр hWnd должен быть NULL. Это позволяет отображать окно сообщения на рабочем столе, отличном от рабочего стола, соответствующего hWnd. Сведения о соображениях безопасности в отношении использования этого флага см. в интерактивных службах. В частности, следует помнить, что этот флаг может создавать интерактивное содержимое на заблокированном рабочем столе и поэтому следует использовать только для очень ограниченного набора сценариев, таких как исчерпание ресурсов. |
Возвращаемое значение
Тип: int
Если в поле сообщения есть кнопка "Отмена
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Если функция выполнена успешно, возвращаемое значение является одним из следующих значений элемента меню.
Возврат кода или значения | Описание |
---|---|
|
Выбрана кнопка abort. |
|
Выбрана кнопка "Отмена |
|
Выбрана кнопка "Продолжить". |
|
Выбрана кнопка "Игнорировать". |
|
Выбрана кнопка "Нет". |
|
Выбрана кнопка ОК. |
|
Выбрана кнопка повторить попытку. |
|
Выбрана кнопка "Повторить попытку". |
|
Выбрана кнопка "Да". |
Замечания
Следующие системные значки можно использовать в окне сообщения, задав параметр uType соответствующим значением флага.
Икона | Значения флага |
---|---|
Значок | MB_ICONHAND, MB_ICONSTOPили MB_ICONERROR |
Значок | MB_ICONQUESTION |
Значок | MB_ICONEXCLAMATION или MB_ICONWARNING |
Значок | MB_ICONASTERISK или MB_ICONINFORMATION |
Добавление двух правых к левому знаку (RLM), представленных символом форматирования Юникода U+200F, в начале отображаемой строки MessageBox интерпретируется обработчиком отрисовки MessageBox, чтобы обеспечить отображение порядка чтения MessageBox как справа налево (RTL).
Если вы используете модульное окно сообщения системы, чтобы указать, что система низка в памяти, строки, на которые указывает lpText и lpCaption параметры не должны приниматься из файла ресурсов, так как попытка загрузки ресурса может завершиться ошибкой.
Если во время диалогового окна создается окно сообщения, используйте дескриптор в качестве параметра hWnd. Параметр hWnd не должен определять дочернее окно, например элемент управления в диалоговом окне.
Примеры
В следующем примере приложение отображает окно сообщения, которое запрашивает пользователю действие после возникновения условия ошибки. В окне сообщения отображается сообщение, описывающее условие ошибки и способ ее устранения. Стиль MB_CANCELTRYCONTINUE направляет MessageBox, чтобы предоставить три кнопки, с помощью которых пользователь может выбрать способ продолжения. Стиль MB_DEFBUTTON2 задает фокус по умолчанию на второй кнопке окна сообщения, в этом случае кнопка повторить попытку.
int DisplayResourceNAMessageBox()
{
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
return msgboxID;
}
На следующем рисунке показаны выходные данные из предыдущего примера кода:
Пример другого поля сообщения см. в разделе Отображение поля сообщения.
Заметка
Заголовок winuser.h определяет MessageBox как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winuser.h (включая Windows.h) |
библиотеки |
User32.lib |
DLL | User32.dll |
набор API | ext-ms-win-ntuser-dialogbox-l1-1-0 (представлено в Windows 8) |
См. также
концептуальные
другие ресурсы
Справочник