Познавательный блог Мобильная врсия

Страницы

Промо

MessageBox — Как вывести окошко с сообщением на C++

MessageBox — Как вывести окошко с сообщением на C++.

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

Пример

#include <windows.h>
#pragma hdrstop
#pragma argsused

WINAPI 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_ABORTRETRYIGNORE - Окно сообщение содержит три командных кнопки: Прервать (Abort), Повторить (Retry) и Проигнорировать (Ignore).
  • 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, 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
Рабочий стол, в настоящее время принимающий ввод, должен быть заданным по умолчанию рабочим столом; иначе, функция не выполняет задачу. Заданный по умолчанию рабочий стол - первая запущенная прикладная программа, после того, как пользователь вошел в систему.
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, Вы имеете два пу
ти:

  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.
Возвращаемые значения
Возвращаемое значение нулевое, если недостаточно памяти, чтобы создать окно сообщений.
Если функция завершается успешно, возвращаемое значение - одно из следующих значений элемента меню, возвращаемых диалоговым окном:

  • IDABORT - Была выбрана кнопка Прервать (Abort).
  • IDCANCEL - Была выбрана кнопка Отменить (Cancel).
  • IDIGNORE - Была выбрана кнопка Игнорировать (Ignore).
  • IDNO - Была выбрана кнопка Нет (No).
  • IDOK - Была выбрана кнопка OK.
  • IDRETRY - Была выбрана кнопка Повторить (Retry).
  • IDYES - Была выбрана кнопка Да (Ye).

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

Комментарии

Комментарий от АЛЕКСАНДР [ 20 декабря, 2010, 21:45 ]

какое значение имеет кнопка с

Комментарий от Александр [ 27 декабря, 2012, 01:10 ]

Помогло пиздец…

Комментарий от Оля [ 11 апреля, 2013, 11:45 ]

так ваш пример работать не будет…необходимо вот так писать L”Привет!”,
L”Дай пять”,

Комментарий от Евгений [ 14 мая, 2013, 18:16 ]

#include

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
FreeConsole();
MessageBox(NULL, “Компьютер был перезагружен после критической ошибки. Код ошибки: 0x0000000a (0xfffffb8007b38980, 0x0000000000000002)! Восстановить систему? “, “ERROR”, MB_ICONERROR);

}

Комментарий от H [ 22 августа, 2013, 21:47 ]

А как обрабатывать нажатые кнопки ?

Комментарий от Павел [ 18 сентября, 2013, 14:00 ]

для проверки пиши
if ((MessageBox(Application->Handle,”—?”,”Внимание!”,MB_ICONWARNING +MB_YESNO))==IDYES){———;}

Комментарий от Ефимович [ 6 апреля, 2014, 17:14 ]

Спасибо!
Очень наглядно и доходчиво.

Комментарий от Алекс [ 23 декабря, 2014, 07:38 ]

Оля,
Спасибо!!!

Написать комментарий








Поиск по сайту

Статистика

Мета

  Разработка и дизайн — StvPromo.ru