Функция MessageBox


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

Синтаксис

int MessageBox(
    HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
);

Параметры

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 В окне сообщения появляется значок стоп-сигнала.
MB_ICONHAND
В окне сообщения появляется значок стоп-сигнала.

Чтобы указать основную кнопку (по умолчанию), установите одно из ниже перечисленных значений.

Значение Предназначение
MB_DEFBUTTON1
Первая кнопка - основная (кнопка используемая по умолчанию). MB_DEFBUTTON1 - значение по умолчанию, если MB_DEFBUTTON2, MB_DEFBUTTON3, или MB_DEFBUTTON4 не определены.
MB_DEFBUTTON2
Вторая кнопка - основная кнопка.
MB_DEFBUTTON3
Третья кнопка - основная кнопка.
MB_DEFBUTTON4
Четвертая кнопка - основная кнопка.

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

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

В зависимости от иерархии окон в приложении, пользователь может быть в состоянии перемещаться в другие окна в пределах потока. Все дочерние окна родителя окна сообщения автоматически блокируются, однако всплывающие окна - не блокируются.

MB_APPLMODAL является значением по умолчанию, если ни MB_SYSTEMMODAL, ни MB_TASKMODAL не определены.
MB_SYSTEMMODAL
То же самое, что и MB_APPLMODAL за исключением того, что окно сообщения имеет стиль WS_EX_TOPMOST. Используйте работающие в системном режиме (недоступном для пользователя) окна сообщения, чтобы уведомить пользователя о серьезных, потенциально разрушительных ошибках, которые требуют немедленного внимания (например, выход за пределы объема памяти). Этот флажок не имеет никакого влияния на способность пользователя взаимодействовать с другими окнами , а не только связанными с hWnd.
MB_TASKMODAL
То же самое, что и MB_APPLMODAL за исключением того, что все окна верхнего уровня, принадлежащие текущему потоку блокируются, если параметр hWnd равен ПУСТО (NULL). Используйте этот флажок тогда, когда вызывающая программа или библиотека не имеют доступного дескриптора окна, но тем не менее должны воспрепятствовать вводу данных в другие окна в вызывающем потоке, не приостанавливая работу других потоков. 

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

Значение Предназначение
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, см. Замечания.

Возвращаемое значение

Если окно сообщения имеет кнопку Отменить (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.

Пример

Пример, см. Показ на экране окна сообщения.

Смотри также 

Обзор Диалоговые окнаФункции, используемые диалоговыми окнами,   FlashWindow,  MessageBeep,  MessageBoxExMessageBoxIndirectSetForegroundWindow 

Размещение и совместимость MessageBox

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz