VC++60 第七章 消息框的四种样式

第七章 消息框的四种样式

 

在前几章中我们多次用到消息框,但都是最简单的样式,即只有一个【确定】按钮的形式。但是VC++给消息框提供了四种不同的形式,本章介绍这四种不同的形式的设计方法。

 

本章要点

1 四种消息框的的设计方法
2 函数的重载

 

7.1 MessageBox()函数的三种格式

 

MessageBox()函数可以有一到三个参数,因此它有四种格式,它们是

1)MessageBox(String)
2)MessageBox(String,String1)
3)MessageBox(String,String1, const)

格式1的参数是字符串,表示要显示的消息。格式2的两个参数都是字符串,表示消息和标题。格式3的参数const是整数常量,它表示要显示的按钮样式和图标样式。图chap07-01是四种样式之一,它使用了YES-NO按钮和感叹号图标。按钮上的文字出现汉字是因为我的VC系统是汉字版的,英文版的就是[YES]和[NO]。

 

VC++60 第七章 消息框的四种样式_第1张图片

在C++中,函数名相同但功能不同的语言现象叫做函数的重载。函数重载就是它们的参数表不同——参数个数不同或个数相同但参数的类型不同,通过不同的参数生成不同的消息框就是应用了MessageBox()函数的重载。

选择不同按钮样式的常量有如下6个:

MB_OK             只有OK按钮
MB_OKCANCEL      确定-取消式
MB_YESNO           是-否式
MB_YESNO_CANCEL     是-否-取消式
MB_RETRYCANCEL   重试-取消式
MB_ABORTRETRYIGNORE    终止-重试-忽略按钮

 

选择不同图标样式的常量有如下4个:
MB_ICONSTOP          ×叉号
MB_ICONEXCLAMATION   惊叹号
MB_ICONINFORMATION   i 信息号
MB_ICONQUESTION      疑问号

 

需要同时选取按钮和图标时就用两个常量相加,如MB_OKCANCEL  + MB_ICONSTOP。所以按按钮来分类,消息框有四种样式,缺少该参数时就只有一个【确定】按钮。

 

7.2 MyMsg程序的界面和功能

 

本章我们要设计一个程序MyMsg.exe,它有四个按钮,按每个按钮都弹出一个消息框,其标题显示代表按钮常量的字符串,而信息内容则代表图标常量的字符串,同时在编辑框中显示该按钮的名称。通过把玩本程序就可以方便地查到不同样式对应的常量该怎么写。程序运行时的界面如下。

VC++60 第七章 消息框的四种样式_第2张图片

图chap07-02

 

7.3 MyMsg程序界面的设计

 

我们在D:\myVC\ch07\位置创建MyMsg.exe的工程文件,还是用对话框模式。参考图chap07-02和面的参数表设计界面。

控件 标题 ID EXTENDED STYLES
按钮 OK-CANCEL IDC_OKCANCEL_BUTTON Client
Static
Modal Frame
都选中
按钮 YES - NO IDC_YESNO_BUTTON
按钮 YESNO-CANCEL IDC_YESNOCANCEL_BUTTON
按钮 RETRY-CANCEL IDC_YESNOCANCEL_BUTTON
按钮 E&XIT IDC_EXIT_BTN
编辑框 —— IDC_RESULTS_EDIT 多行,排列居中,
Client,Static,Modal Frame
组框 Yours selected IDC_STATIC  
对话框 MyMsg IDD_MYMSG_DIALOG 字体 12

 

 

7.4 编写代码

 

首先,我们给编辑框引进一个值变量String m_ResultsEdit,用来存放要显示的信息。然后给[OK-CANCEL]按钮写代码,这次弹出的消息框用的常量是MB_OKCANCEL  + MB_ICONSTOP。然后更新编辑框的内容,这是在消息框被关闭后执行的。全部代码如下:

void CMyMsgDlg::OnOkcancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONSTOP";
    title= "MB_OKCANCEL";
    MessageBox(info, title, MB_OKCANCEL+MB_ICONSTOP);
    m_ResultsEdit = "OK_CANCEL fashion";
    UpdateData(FALSE);
}

其它三个按钮的代码也类似,列举如下:

void CMyMsgDlg::OnYesnoButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONEXCLAMATION";
    title= "MB_YESNO";
    MessageBox(info, title, MB_YESNO+MB_ICONEXCLAMATION);
    m_ResultsEdit = "MB_YESNO fashion";
    UpdateData(FALSE);
}

void CMyMsgDlg::OnYesnocancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONINFORMATION";
    title= "YESNO_CANCEL";
    MessageBox(info, title, MB_YESNOCANCEL+MB_ICONINFORMATION);
    m_ResultsEdit = "YESNO_CANCEL fashion";
    UpdateData(FALSE);
}

void CMyMsgDlg::OnRetrycancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONQUESTION";
    title= "MB_RETRYCANCEL";
    MessageBox(info, title, MB_RETRYCANCEL+MB_ICONQUESTION);
    m_ResultsEdit = "RETRY_CANCEL fashion";
    UpdateData(FALSE);
}

编译和连接后运行之,如果按EXIT按钮不能退出,那是你忘记给它写退出代码了,我以后不再提醒了。

—END—

你可能感兴趣的:(MFC)