6.31.1.22 - Функция MessageBoxEx

(ОкноСообщенийРасширенное)

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

Синтаксис

int MessageBoxEx
(
	HWND hWnd,		// дескриптор окна владельца
	LPCTSTR lpText,	// адрес текста в окне сообщений
	LPCTSTR lpCaption,	// адрес заголовка в окне сообщений
	UINT uType 		// стиль окна сообщений
	WORD wLanguageId	// идентификатор языка
);

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

Определите один из следующих флажков, чтобы отобразить иконку в окне сообщений:

Определите один из следующих флажков, чтобы указать заданную по умолчанию кнопку:

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

В дополнение, вы можете устанавливать ниже перечисленные флажки:
MB_DEFAULT_DESKTOP_ONLY
Рабочий стол, в настоящее время принимающий ввод должен быть заданным по умолчанию рабочим столом; иначе, функция не выполняет задачу. Заданный по умолчанию рабочий стол - первая запущенная прикладная программа, после того, как пользователь вошел в систему.
MB_HELP
Прибавляет кнопку Справка (Help) в окно сообщений. Выбор кнопки Help или нажатие F1 генерирует событие появления Справки.
MB_RIGHT
Выравнивание текста справа.
MB_RTLREADING
Отображает на экране сообщение и текст заголовка с использованием порядка зеркального отображения для Еврейских и Арабских систем письменности.
MB_SETFOREGROUND
Окно сообщений становится приоритетным окном. Внутри, Windows для окна сообщений вызывает функцию SetForegroundWindow.
MB_TOPMOST
Окно сообщений создается со стилем окна WS_EX_TOPMOST.
MB_SERVICE_NOTIFICATION
Только для Windows NT: вызывающая программа является обслуживающей по уведомлению пользователя о событии. Функция отображает окно сообщений на текущем активном рабочем столе, даже если никто из пользователей не вошел в систему компьютера.
Если этот флажок установлен, параметр hWnd должен иметь значение ПУСТО (NULL). Это такое окно сообщений, которое может появляться на другом рабочем столе, а не только на том, которое соответствует hWnd.
Для Windows NT версии 4.0, значение MB_SERVICE_NOTIFICATION изменилось. См. WINUSER.H для старых и новых значений. Windows NT 4.0 обеспечивает совместимость вниз для существующих ранее услуг, при помощи отображения старых значений в новых значениях при реализации MessageBox и MessageBoxEx. Это отображение сделано только для исполнимых программ (.exe), которые имеют номер версии, как установлено компоновщиком, меньше чем 4.0.
Чтобы сформировать обслуживание, которое использует MB_SERVICE_NOTIFICATION и возможность запускать, и Windows NT 3.x и Windows NT 4.0, Вы имеете два пути.
1. Во время компоновки, определите номер версии меньше чем 4.0; или
2. Во время компоновки, определите версию 4.0. В во время запуска, используйте функцию GetVersionEx, чтобы проверить системную версию. Тогда при продолжении запуска Windows NT 3.x, используйте MB_SERVICE_NOTIFICATION_NT3X; а для Windows NT 4.0, используйте MB_SERVICE_NOTIFICATION.
MB_SERVICE_NOTIFICATION_NT3X
Только для Windows NT: Это значение соответствует значению, определенному для MB_SERVICE_NOTIFICATION для версии 3.51 Windows NT.

wLanguageId
Определяет язык, на котором будет отображаться текст, содержащийся в предопределенных командных кнопках. Это значение должно быть в форме, возвращающей макрокомандой MAKELANGID.
За перечнем идентификаторов языка, поддерживаемых Win32, см. Идентификаторы Языка. Обратите внимание, что каждый привязанный к конкретной стране выпуск Windows обычно содержит ресурсы только для ограниченного набора языков. Таким образом, например, американская версия предлагает LANG_ENGLISH, французская версия предлагает LANG_FRENCH, немецкая версия предлагает LANG_GERMAN и японская версия предлагает LANG_JAPANESE. Каждая версия предлагает LANG_NEUTRAL. Это ограничивает установку значений, которые могут использоваться с параметром wLanguageId. Перед определением идентификатора языка, Вы должны перечислить территории, которые установлены на системе.

Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - значение элемента меню отличное от нуля, возвращенное диалоговым окном:

Если окно сообщений имеет кнопку Отменить (Cancel), функция возвращает значение IDCANCEL тогда, когда или нажата клавиша ESC, или выбрана кнопка Cancel. Если у окна сообщений нет кнопки Cancel, нажатие на ESC не имеет никакого эффекта.

Замечания
Когда Вы используете системно - модальное окно сообщений, чтобы указать, что система имеет мало памяти, строки, переданные как параметры lpText и lpCaption не должны быть приняты из файла ресурса, так как попытка загрузить ресурс может потерпеть неудачу.
Когда прикладная программа вызывает MessageBoxEx и устанавливает флажки MB_ICONHAND и MB_SYSTEMMODAL в параметре uType, Win32 API отображает на экране законченное окно сообщений независимо от доступной памяти. Когда эти флажки установлены, Windows ограничивает длину текста окна сообщений до одной строки.
Если Вы создаете окно сообщений, в то время когда присутствует диалоговое окно, дескриптор блока диалога используется как параметр hWnd. Параметр hWnd не должен идентифицировать дочернее окно, типа диалогового окна.
Windows 95: Система может поддерживать максимум 16,364 дескрипторов окна.

Смотри также
MAKELANGID, MessageBeep, MessageBox, MessageBoxIndirect, SetForegroundWindow

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

Windows NT				Да 
Win95					Да 
Win32s					Да 
Импортируемая библиотека			user32.lib 
Заголовочный файл				winuser.h 
Unicode					WinNT; Win95
Замечания по платформе			Не имеется

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 14.06.2002