MessageBox — Как вывести окошко с сообщением на C++.
Функция MessageBox создает, отображает на экране и оперирует окном сообщений. Окно сообщений содержит определяемое программой сообщение и заголовок, плюс любую комбинацию предопределенных пиктограмм и командных кнопок.
Пример
#include <windows.h>
#pragma hdrstop
#pragma argsusedWINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
MessageBox(
NULL,
“Привет!”,
“Дай пять”,
MB_YESNO | //Да нет (кнопки)
MB_DEFBUTTON1 | //Выделеная кнопка
MB_ICONEXCLAMATION | //Тип иконки
MB_DEFAULT_DESKTOP_ONLY
);
return 0;
}
Синтаксис
int MessageBox
(
HWND hWnd, // дескриптор окна владельца
LPCTSTR lpText, // адрес текста в окне сообщений
LPCTSTR lpCaption, // адрес заголовка в окне сообщений
UINT uType // стиль окна сообщений
);
Параметры
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). Это такое окно сообщений, которое может появляться на другом рабочем столе, а не только на том, которое соответствует Wnd.
Для 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, Вы имеете два пу
ти:
Во время запуска, используйте функцию 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.
Возвращаемые значения
Возвращаемое значение нулевое, если недостаточно памяти, чтобы создать окно сообщений.
Если функция завершается успешно, возвращаемое значение – одно из следующих значений элемента меню, возвращаемых диалоговым окном:
Если окно сообщений имеет кнопку Отменить (Cancel), функция возвращает значение IDCANCEL тогда, если или нажата клавиша ESC, или выбрана кнопка Cancel. Если у окна сообщений нет кнопки Cancel, нажатие на ESC не имеет никакого эффекта.
какое значение имеет кнопка с
Помогло пиздец…
так ваш пример работать не будет…необходимо вот так писать L”Привет!”,
L”Дай пять”,
#include
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
FreeConsole();
MessageBox(NULL, “Компьютер был перезагружен после критической ошибки. Код ошибки: 0x0000000a (0xfffffb8007b38980, 0x0000000000000002)! Восстановить систему? “, “ERROR”, MB_ICONERROR);
}
А как обрабатывать нажатые кнопки ?
для проверки пиши
if ((MessageBox(Application->Handle,”—?”,”Внимание!”,MB_ICONWARNING +MB_YESNO))==IDYES){———;}
Спасибо!
Очень наглядно и доходчиво.
Оля,
Спасибо!!!