Функция 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
Категория
Диалоговые окна