Функция MessageBoxEx

Declare Function MessageBoxEx Lib "user32.dll" Alias "MessageBoxExA" (ByVal hWnd As Long, _
    ByVal lpText As String, ByVal lpCaption As String, _
    ByVal uType As Long, ByVal wLanguageId As Long) As Long

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

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

В случае ошибки функция возвращает 0 (используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает один из следующих флажков, определяющих нажатую кнопку:

IDABORT=3
Нажата кнопка Стоп (Abort)
IDCANCEL=2
Нажата кнопка Отмена (Cancel) (или пользователь закрыл окно клавишей Esc)
IDCONTINUE=11
Windows 2000:Нажата кнопка Continue
IDIGNORE=5
Нажата кнопка Пропустить (Ignore)
IDNO=7
Нажата кнопка Нет (No)
IDOK=1
Нажата кнопка OK
IDRETRY=4
Нажата кнопка Повтор (Retry)
IDTRYAGAIN=10
Windows 2000:Нажата кнопка Try Again
IDYES=6
Нажата кнопка Да (Yes)

Параметры

hWnd
Дескриптор родительского окна для создаваемого окна сообщения. Если данный параметр NULL, окно создается без родителя
lpText
Текст, выводимый в окне сообщения
lpCaption
Текст, выводимый в заголовке
uType
Представляет собой набор битовых флагов, определяющих содержимое и внешний вид окна сообщения. Данный параметр может быть комбинацией флагов из следующих групп флагов:
MB_ABORTRETRYIGNORE = &H2
Окно сообщения содержит три кнопки: Стоп (Abort), Повтор (Retry) и Пропустить (Ignore)
MB_CANCELTRYCONTINUE = &H6
Windows 2000 и выше:Окно сообщения содержит три кнопки: Отмена (Cancel), Повторить (Try Again) и Продолжить (Continue)
MB_HELP = &H4000
Windows 95/98/Me/NT 4.0 и выше: Добавляется кнопка Справка(Help), при нажатии которой посылается сообщение WM_HELP родительскому окну (определяется параметром hWnd). Данный флаг может использоваться только вместе с другими флагами и не может использоваться отдельно
MB_OK = &H0
Окно сообщения содержит только одну кнопку: OK. Данный флаг используется по умолчанию
MB_OKCANCEL = &H1
Окно сообщения содержит две кнопки: OK и Отмена (Cancel)
MB_RETRYCANCEL = &H5
Окно сообщения содержит две кнопки: Повтор (Retry) и Отмена (Cancel)
MB_YESNO = &H4
Окно сообщения содержит две кнопки: Да (Yes) и Нет (No)
MB_YESNOCANCEL = &H3
Окно сообщения содержит три кнопки: Да (Yes), Нет (No) и Отмена (Cancel)

Используйте один из следующих флагов для выбора иконки, которая появятся в окне сообщения:
MB_ICONASTERISK = MB_ICONINFORMATION = &H40
В окне сообщения появится иконка, со строчной буквой i, в центре синего круга
MB_ICONERROR = MB_ICONHAND= MB_ICONSTOP = &H10
В окне сообщения появится иконка с изображением знака STOP
MB_ICONEXCLAMATION = MB_ICONWARNING = &H30
В окне сообщения появится иконка с изображением восклицательного знака
MB_ICONQUESTION = &H20
В окне сообщения появится иконка с изображением вопросительного знака

Используйте один из следующих флагов для выбора кнопки по умолчанию, активной кнопки в окне сообщения:
MB_DEFBUTTON1 = &H0
Активной в окне будет первая кнопка. Это значение используется по умолчанию
MB_DEFBUTTON2 = &H100
Активной в окне будет вторая кнопка
MB_DEFBUTTON3 = &H200
Активной в окне будет третья кнопка
MB_DEFBUTTON4 = &H300
Активной в окне будет четвертая кнопка

Используйте один из следующих флагов для указания модальности окна сообщения:
MB_APPLMODAL = &H0
Пользователь должен закрыть окно сообщения до того как продолжит работу в окне, идентификатор которого указан в hWnd. При этом пользователь может работать с другими приложениями. В зависимости от иерархии окон в приложении, пользователь может также работать с некоторыми другими окнами этого же приложения. Все дочернии окна родительского окна автоматически становятся недоступными, но кроме всплывающих (popup) окон. Флаг MB_APPLMODAL используется по умолчанию, если не указан один из MB_SYSTEMMODAL и MB_TASKMODAL
MB_SYSTEMMODAL = &H1000
Тоже, что и MB_APPLMODAL за исключением того, что используется стиль WS_EX_TOPMOST. Используйте системно-модальное окно сообщений для оповещения пользователя о серьезных, потенциально опасных ошибках, требующих немедленной реакции со стороны пользователя (например, о недостаточном количестве свободной памяти). Данный флаг не сказывается на возможности пользователя взаимодействовать со всеми окнами, кроме тех, которые связаны с родителем (hWnd)
MB_TASKMODAL = &H2000
Тоже, что и MB_APPLMODAL за исключением того, что все окна верхнего уровня связанные с текущей задачей становятся неактивными при условии, что параметр hWnd равен NULL. Используйте данный флаг в случае, когда приложение, либо библиотека не имеет идентификатора окна, но требуется ограничить работу с другими окнами текущего приложения, не нарушая при этом работоспособность других приложений

В дополнение к вышеописанным, Вы можете использовать следующие флаги:
MB_DEFAULT_DESKTOP_ONLY = &H20000
Windows NT/2000 и выше: То же,что и MB_SERVICE_NOTIFICATION, за исключением того, что система показывает окно сообщения только на Рабочем столе, используемом по умолчанию, в противном случае функция завершится с ошибкой. Используемым по умолчанию является рабочий стол загружаемый после входа пользователя в систему
MB_RIGHT = &H80000
Текст в окне сообщения выравнивается по правому краю
MB_RTLREADING = &H100000
Текст и заголовок окна сообщения выводятся не слева направо, как обычно, а справо налево в арабской и еврейской системах
MB_SETFOREGROUND = &H10000
Окно сообщения выводится на передний план
MB_TOPMOST = &H40000
Окно сообщения создается с использованием стиля WS_EX_TOPMOST
MB_SERVICE_NOTIFICATION = &H200000
только Windows NT 4.0 и выше/2000: вызывающая программа является сервисом, сообщающим пользователю о некотором событии. Функция отображает окно сообщения на текущем активном рабочем столе даже в случае, если пользователь не осуществил вход в систему. При установке данного флага необходимо в качестве hWnd использовать значение 0, чтобы окно сообщения могло появится на рабочих столах, не связанных с конкретным hWnd
MB_SERVICE_NOTIFICATION_NT3X = &H40000
Windows NT 3.1- 3.51:данное значение соответствует MB_SERVICE_NOTIFICATION, но для Windows NT 3.51
wLanguageId
Не используется. Установите равным 0

Пример

' Выводим сообщение
Dim mbresult As Long
Dim flags As Long
Dim lang As Long

flags = MB_YESNO Or MB_ICONWARNING Or MB_DEFBUTTON2 Or MB_SYSTEMMODAL

mbresult = MessageBoxEx(Form1.hWnd, "Вам нравится справочник?", "Внимание!", flags, 0)
' Проверяем, что нажато
If mbresult = IDYES Then
  Debug.Print "Спасибо за ваш ответ!"
Elseif mbresult = IDNO Then
  Debug.Print "Видеть вас не желаю!"
End If

Смотри также

MessageBox, MessageBoxIndirect

Категория

Диалоговые окна