Функция MessageBoxEx создает, показывает на экране и использует окно сообщения. Окно сообщения содержит определяемое программой сообщение и заголовок, плюс любая комбинация предопределенных значков и командных кнопок. Надписи кнопок на языке системного интерфейса пользователя.
В настоящее время функции MessageBoxEx и MessageBox работают одним и тем же способом.
Синтаксис
int MessageBoxEx( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType, WORD wLanguageId ); |
Параметры
hWnd
[in] Дескриптор окна владельца, которое создает окно сообщения. Если этот параметр - ПУСТО (NULL), окно сообщения не имеет окна владельца.lpText
[in] Указатель на символьную строку с нулем в конце, которая содержит сообщение показываемое на экране.lpCaption
[in] Указатель на символьную строку с нулем в конце, которая содержит заголовок диалогового окна (окна сообщения). Если этот параметр - ПУСТО (NULL), используется заданный по умолчанию заголовок Error (Ошибка).uType
[in] Устанавливает содержание и режим работы диалогового окна. Этим параметром может быть комбинация флажков из нижеперечисленных групп флажков.Значение | Предназначение |
MB_ABORTRETRYIGNORE | Окно сообщения содержит три командных кнопки: Прекратить (Abort), Поторить (Retry) и Пропустить (Ignore). |
MB_CANCELTRYCONTINUE | Microsoft® Windows® 2000/XP: Окно сообщения содержит три командных кнопки: Отменить (Cancel), Попытаться снова (Try Again), Продолжить (Continue). Используйте этот тип окна сообщения вместо типа MB_ABORTRETRYIGNORE. |
MB_HELP | Windows 95/98/Me, Windows NT® 4.0 и выше: Добавляет в окно сообщения кнопку Справка (Help). Когда пользователь щелкает по кнопке Справка (Help) или нажимает клавишу F1, система отправляет владельцу сообщение WM_HELP. |
MB_OK | Окно сообщения содержит одну командную кнопку: OK. Это - значение по умолчанию. |
MB_OKCANCEL | Окно сообщения содержит две командных кнопки: OK и Отменить (Cancel). |
MB_RETRYCANCEL | Окно сообщения содержит две командных кнопки: Поторить (Retry) и Отменить (Cancel). |
MB_YESNO | Окно сообщения содержит две командных кнопки: Да (Yes) и Нет (No). |
MB_YESNOCANCEL | Окно сообщения содержит три командных кнопки: Да (Yes), Нет (No) и Отменить (Cancel). |
Чтобы показать на экране значок в окне сообщения, установите одно из ниже перечисленных значений.
Значение | Предназначение |
MB_ICONEXCLAMATION | В окне сообщения появляется иконка знака восклицания. |
MB_ICONWARNING | В окне сообщения появляется иконка знака восклицания. |
MB_ICONINFORMATION | В окне сообщения появляется значок, состоящий из строчной буквы i в круге. |
MB_ICONASTERISK | В окне сообщения появляется значок, состоящий из строчной буквы i в круге. |
MB_ICONQUESTION | В окне сообщения появляется иконка знака вопроса. |
MB_ICONSTOP | В окне сообщения появляется значок стоп-сигнала. |
MB_ICONERROR | В окне сообщения появляется значок стоп-сигнала. |
|
В окне сообщения появляется значок стоп-сигнала. |
Чтобы указать основную кнопку (по умолчанию), установите одно из ниже перечисленных значений.
Значение | Предназначение |
|
|
|
Вторая кнопка - основная кнопка. |
|
Третья кнопка - основная кнопка. |
|
Четвертая кнопка - основная кнопка. |
Чтобы указать модальность диалогового окна, установите одно из ниже перечисленных значений.
Значение | Предназначение |
|
Пользователь
должен ответить окну сообщения перед
продолжением работы в окне,
идентифицированном параметром hWnd.
При
этом, пользователь может перемещаться
в окна других потоков и работать в этих
окнах.
В зависимости от иерархии окон в приложении, пользователь может быть в состоянии перемещаться в другие окна в пределах потока. Все дочерние окна родителя окна сообщения автоматически блокируются, однако всплывающие окна - не блокируются.
|
|
|
|
|
Чтобы устанавливать другие параметры, используйте одно или несколько нижеследующих значений.
Значение | Предназначение |
MB_DEFAULT_DESKTOP_ONLY | Windows NT/2000/XP:
То же самое, что и MB_SERVICE_NOTIFICATION
за
исключением того, что система
показывает на экране окно сообщения
только на заданном по умолчанию
рабочем столе взаимодействующей
оконной станции. Дополнительную
информацию, см. в статье Оконные
станции и Рабочие столы. Windows NT 4.0 и раньше: Если текущий рабочий стол ввода данных - не заданный по умолчанию рабочий стол, функция MessageBox завершается ошибкой. Windows 2000/XP: Если текущий рабочий стол ввода данных - не заданный по умолчанию рабочий стол, MessageBox не возвращает значение до тех пор, пока пользователь не переключится на заданный по умолчанию рабочий стол. Windows 95/98/Me: Этот флажок не действует. |
MB_RIGHT | Текст выравнивается по правому краю. |
MB_RTLREADING | Выведенный на экран текст сообщения и заголовка, использует порядок чтения справа налево как в системах на еврейском и арабских языках. |
MB_SETFOREGROUND | Окно сообщения становится высокоприоритетным окном. Внутренне, система вызывает функцию SetForegroundWindow для окна сообщения. |
MB_TOPMOST | Окно сообщения создается со стилем окна WS_EX_TOPMOST. |
MB_SERVICE_NOTIFICATION | Windows NT/2000/XP:
Вызывающая программа - сервисный
модуль, уведомляющий о событии
пользователя . Функция показывает на
экране окно сообщения на текущем
активном рабочем столе, даже если нет
пользователя, начавшего работу на
компьютере. Терминальные службы: Если вызывающий поток имеет маркер заимствования прав, функция направляет окно сообщения в сессию, заданную в маркере заимствования прав. Если этот флажок установлен, параметр hWnd должен иметь значение ПУСТО (NULL). Это делается так затем, чтобы окно сообщения можно было показать на рабочем столе, а не рабочий стол, соответствующий hWnd. Для получения дополнительной информации об изменениях между Microsoft ® Windows NT ® 3.51 и Windows NT 4.0, см. Замечания. |
MB_SERVICE_NOTIFICATION_NT3X | Windows NT/2000/XP:
Это значение соответствует значению,
определяемому для MB_SERVICE_NOTIFICATION
в Windows NT
версии 3.51.
Для получения дополнительной информации об изменениях между Microsoft ® Windows NT ® 3.51 и Windows NT 4.0, см. Замечания. |
wLanguageId
[in] Зарезервированный.Возвращаемое значение
Если окно сообщения имеет кнопку Отменить (Cancel), то функция возвращает значение IDCANCEL, если или обрабатывается клавиша ESC, или выбрана кнопка Отменить (Cancel). Если окно сообщения не имеет кнопки Отменить (Cancel), нажатия ESC не имеет никакого действия.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Если функция завершается успешно, возвращаемое значение - одно из ниже перечисленных значений пункта меню.
Значение | Предназначение |
IDABORT | Была выбрана кнопка Прекратить (Abort). |
IDCANCEL | Была выбрана кнопка Отменить (Cancel). |
IDCONTINUE | Была выбрана кнопка Продолжить (Continue). |
IDIGNORE | Была выбрана кнопка Пропустить (Ignore). |
IDNO | Была выбрана кнопка Нет (No). |
IDOK | Была выбрана кнопка OK. |
IDRETRY | Была выбрана кнопка Поторить (Retry). |
IDTRYAGAIN | Была выбрана кнопка Попытаться снова (Try Again). |
IDYES | Была выбрана кнопка Да (Yes). |
Замечания
Когда Вы используете работающее в системном (недоступном) режиме окно сообщения, которое обращает внимание на то, что в системе мало памяти, строки, на которые указывают параметры lpText и lpCaption не должны браться из файла ресурса, потому что попытка загрузить ресурс может завершиться ошибкой.
Если Вы создаете окно сообщения, в то время, когда диалоговое окно присутствует, используйте дескриптор блока диалога как параметр hWnd. Параметр hWnd не должен идентифицировать дочернее окно, такое как орган управления в блоке диалога.
Windows 95/98/Me: Система может поддержать максимум 16 364 дескриптора окна.
Windows NT/2000/XP: Значение MB_SERVICE_NOTIFICATION изменялось, начиная с Windows NT 4.0. Windows NT 4.0 предусматривает совместимость вниз для существовавших до этого услуг, преобразуя старое значение в новое при исполнении функции MessageBox. Это преобразование делалось только для исполняемых программ, которые имеют номер версии меньше чем 4.0, как устанавливалось компоновщиком.
Чтобы построить сервисный модуль, который использует MB_SERVICE_NOTIFICATION и может выполниться и в Windows ® Microsoft NT 3.x и в Windows NT 4.0, Вы можете сделать одно из ниже перечисленного.
Windows 95/98/Me: Даже при том, что MessageBoxW существует, она все равно поддерживается программой Microsoft Layer for Unicode, чтобы придать большую совместимость характеру работы в среде всех операционных систем Windows. Чтобы использовать эту функцию, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.
Смотри также
Обзор Диалоговые окна, Функции, используемые
диалоговыми окнами,
Размещение и совместимость MessageBoxEx |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |