Сегодня вы научитесь :
Вверх
Вверх
Для отображения окна сообщения на экране, достаточно вызвать
соответствующую функцию, передав ей в качестве аргумента текст сообщения.
На экране появится окно с текстом сообщения и возможно пиктограммой,
в котором пользователю предлагается для подтверждения щелкнуть по кнопке.
Можно создать естественно и другие окна сообщений с различгым набором
кнопок и различными пиктограммами.
Вверх
Функции MessageBox можно передавать один, два или три аргумента.
Кроме того функция MessageBox возвращает значение, показывающее на какой из
кнопок щелкнул пользователь.
Количество используемых в MessageBox сочетаний кнопок ограничено
и перечислено ниже в таблице 6.1.Создать свою комбинацию кнопок
нельзя, но можно сделать собственное диалоговое окно, похожее на окно
сообщения.
Таблица 6.1 Идентификаторы комбинации кнопок в функции MessageBox
Использование существующих (системных)
диалоговых окон
Windows предоствляет большое количество существующих диалоговых окон.
Простейшие - message boxes (окна сообщений) Они показывают пользователю
сообщение и предлагают для выбора от одной до трех кнопок.
Окна сообщений
Функция MessageBox
Таким образом получая третий аргумент и возвращая результат, функция
MessageBox обеспечивает широкие возможности для приложений.
Идентификатор (ID) | Кнопки (Buttons) |
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_CANCELTRYCONTINUE | Cancel, Try Again, Continue |
Эти идентификаторы будут указываться в качестве третьего параметра.
Чтобы определить пиктограмму, отображаемую в окне сообщения, можно применить операцию ИЛИ к идентификатору пиктограммы и идентификатору сочетания кнопок.Если нужно задать что-то одно - либо сочетание кнопок либо пиктограмму, а другое оставить по умолчанию, то можно указать только один идентификатор.
Таблица 6.1 Идентификаторы пиктограмм в функции MessageBox
Илентификатор | Пиктограмма |
MB_ICONINFORMATION | Информационное сообщение |
MB_ICONQUESTION | Вопросительный знак |
MB_ICONSTOP | Знак остановки |
MB_ICONEXLAMATION | Восклицательный знак |
Если при вызове функции MessageBox указывается сочетание кнопок, то нужно получить возвращаемое значение, чтобы определить на какой кнопке щелкнул пользователь.Возвращаемые значения являются целочисленными, их идентификаторы приведены в таблице 6.3
Таблица 6.3 Идентификаторы результатов, возвращаемых функцией MessageBox
Идентификатор | Кнопка, на которой щелкнул пользователь |
IDABORT | Прервать |
IDRETRY | Повторить |
IDIGNORE | Пропустить |
IDYES | Да |
IDNO | Нет |
IDOK | OK |
IDCANCEL | Отмена |
IDTRYAGAIN | Повторить попытку |
IDCONTINUE | Продолжить |
Если нужно открыть окно сообщения из класса, не являющегося потомком CWnd, используйте другую версию этой функции под именем AfxMessageBox. У нее нет параметра задающего заголовок окна сообщения - на экране будут отображены только текст сообщения, пиктограмма и кнопки.
Вверх
Таблица 6.4 Значения свойств элементов управления.
Таблица 6.5
Вверх
Листинг 6.1
switch(iResults)
Откомпилируйте и запустите приложение и вы увидите что работа приложения
зависит от выбора кнопки в окне сообщения.
Листинг 6.1
switch(iResults)
case IDIGNORE:
UpdateData(FALSE);
Теперь понятно как использовать другое сочетание кнопок.
Обе функции обрабатывающие события от элементов управления на самом
деле идентичны.В каждой из них объявляется целочисленная переменная
для хранения результата, возвращаемого функцией MessageBox. В качестве
аргументов функции MessageBox передается :
Возвращаемое функцией MessageBox значение передается оператору выбора
switch.Сообщение отображаемое в главном окне приложения, показывает
пользователю какая кнопка была выбрана в окне сообщения.
Для управления
выполнением программы, основанного на пользовательском выборе, можно применить
один или два условных оператора if, но целочисленное возвращаемое значение
все же удобнее проверять операторм выбора switch.
Откомпилировав и запустив приложение , можно щелкнуть на любой из
двух верхних кнопок и увидеть окно сообщения типа Message Box.
Если щелкнуть на одной из кнопок окна сообщения, то в поле редактирования
главного окна приложения появится собщение, показывающее какая кнопка
была выбрана.Так как переменная m_strResults у нас была ассоциирована
с полем редактирования EditBox.
Назад |
Начало урока |
Вверх |
Вперед
Создание диалогового приложения
Объект
Свойство
Значение
Command Button
ID
CaptionIDC_BYESNOCANCEL
&Yes, No, Cancel
Command Button
ID
CaptionIDC_BFILEOPEN
&File open
Command Button
ID
CaptionIDC_BABORTRETRYIGNORE
&Abort, Retry, Ignore
Command Button
ID
CaptionIDC_BCUSTOMDIALOG
&Custom Dialog
Command Button
ID
CaptionIDC_BWHICHOPTION
&Which option (какая опция?)
Command Button
ID
CaptionIDC_BEXIT
E&xit
Static Text
Caption
Dialog Result
Edit Control
ID
Multiline
Auto ScrollIDC_ERESULTS
True
True
IDC_ERESULTS
m_strResults
Value
CString
Public
IDC_BWHICHOPTION
m_cWhichOption
Control
Control
Public
Программирование кнопок окна сообщения.
void CDialogsDlg::OnBnClickedByesnocancel()
{
iResults = MessageBox("Press the Yes, No, or Cancel button ",
"Yes, No Cancel Dialog", MB_YESNOCANCEL | MB_ICONINFORMATION);
{
break;
break;
break;
void CDialogsDlg::OnBnClickedBabortretryignore()
{
iResults = MessageBox("Press the Abort, Retry, Ignore button ",
"Abort, Retry, Ignore Dialog", MB_ABORTRETRYIGNORE || MB_ICONQESTION);
{
break;
break;
break;
Содержание