Пятница, 17.05.2024, 01:39
Главная Регистрация RSS поиск
Приветствую Вас, Гость
Меню сайта
Категории раздела
HTML [44]
Visual C++ и MFC [21]
c++ [78]
php [19]
Javascript [15]
C# [51]
загрузки [0]
XNA [10]
создание игр с помощью xna
Наш опрос
Каким языком программирования вы увлекаетесь
Всего ответов: 2420
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » Visual C++ и MFC

Окна сообщений

Учитывая тот факт, что материл, который мы с Вами разбираем на этом уроке
абсолютно новый для Вас, можно предположить что у Вас появился вопрос: "Что
такое окно с сообщением?". Вы сто процентов сталкивались с ним при повседневной
работе с Windows. Как один из вариантов можно привести пример следующего окна:



Итак, теперь, зная о чем идет речь, давайте научимся самостоятельно создавать
такие окна. Для этого рассмотрим функцию, которая позвляет вывести окно c
сообщением:


int AfxMessageBox(LPCTSTR lpszText, UINT nType=MB_OK, UINT nIDHelp=0);


Данная функция выводит в окно сообщения строку lpszText и использует
идентификатор nIDHelp для перехода к соответсвующей теме справки при нажатии
клавиши <F1> (заметим, что на данный момент параметр nIDHelp не
предоставляет для нас практического интереса. Поэтому отложим исследование этого
момента до рассмотрения темы, посвященной созданию справочной системы). Параметр
nType задает тип окна сообщений и может принимать одно из следующих значений:


Возможные типы окна сообщения
Значение параметра nType Описание
MB_OK Окно содержит только кнопку OK
MB_OKCANCEL Окно содержит две кнопки: OK и Cancel (Отмена)
MB_RETRYCANCEL Окно содержит две кнопки: Retry и Cancel (Повтор и
Отмена)
MB_ABORTRETRYIGNORE Окно содержит три кнопки: Abort, Retry и Ignore (Стоп, Повтор и
Пропустить)
MB_YESNO Окно содержит две кнопки: Yes и No (Да и Нет)
MB_YESNOCANCEL Окно содержит три кнопки: Yes, No и Cancel (Да, Нет и
Отмена)

Если Вы хотите также добавить иконку в информационное окно, Вы можете
комбинировать указанные значения параметра nType с нижеследующими:
MB_ICONEXCLAMATION (иконка -восклицательный знак), MB_ICONINFORMATION
(или MB_ICONASTERISK; иконка - символ "i"), MB_ICONQUESTION (иконка -
знак вопроса), MB_ICONSTOP (или MB_ICONHAND; иконка - "стоп").


Вы можете также назначить кнопку по умолчанию, если вы используете
информационное окно с несколькими кнопками. Визуально, мы всегда можем
определить кнопку по умолчанию по затемненному контуру вокруг кнопки. Для
назначения кнопки по умолчанию, используйет соответсвенно одну из констант:
MB_DEFBUTTON1 (кнопка по умолчанию - первая), MB_DEFBUTTON2
(вторая) или MB_DEFBUTTON3 (третья).


Ниже приводиться рисунок, иллюстрирующий использование констант:
MB_ABORTRETRYIGNORE (три кнопки в окне сообщений), MB_ICONSTOP (иконка в виде
запрещающего креста), MB_DEFBUTTON2 (кнопка "Повторить" назначена кнопкой по
умолчанию). Окно было получено в результате вызова функции:
AfxMessageBox("Используемые константы:
MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_DEFBUTTON2",
MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_DEFBUTTON2);



Функция возвращает одно из следующих значений:


Описание возвращаемого значения
Значение Описание
IDOK Была нажата кнопка OK
IDCANCEL Была нажата кнопка Cancel (или клавиша <Esc>)
IDABORT Была нажата кнопка Abort
IDIGNORE Была нажата кнопка Ignore
IDYES Была нажата кнопка Yes
IDNO Была нажата кнопка No
IDRETRY Была нажата кнопка Retry
0 Произошла ошибка при создании окна
сообщений

Итак, солидный багаж знаний по окнам сообщений у Вас уже есть. Теперь немного
о том, как и когда необходимо использовать окна сообщений? На вопрос "Когда?"
ответ очевиден. Когда Вам необходимо предоставить пользователю запрос или
сообщить пользователю о какой-то приятной новости, обычно, Вы будете
использовать окна сообщений. Например, следующий фрагмент кода демонстрирует
использование окна сообщений:

if (AfxMessageBox("Удаляем все файлы?",
MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION) == IDYES){
//удаляем все файлы
}

Заметим, что для вывода окна сообщения Вы можете также воспользоваться
функцией

int 
MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption=NULL, UINT nType=MB_OK);

Данная функция принимает lpszText в качестве строки сообщения, lpszCaption -
заголовок окна сообщения, nType - стили окна сообщений (см. AfxMessageBox).


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

Категория: Visual C++ и MFC | Добавил: slava (26.09.2009)
Просмотров: 4824 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]