其常用的成员函数如表7.5。 4. CPrintDialog类
CPrintDialog类封装了Windows标准的“打印”和“打印设置”对话框,处理打印程序时,在编程中按照如下步骤使用该对话框:
(1)构造CPrintDialog类对象。
(2)通过对象的数据成员m_fr初始化对话框中各控件的值或状态。 (3)使用成员函数DoModal()调用对话框。
(4)应用程序通过CPrintDialog类的成员函数获得各种信息。 其常用的成员函数如表7.6。 5. CFindReplaceDialog类
CFindReplaceDialog类封装了Windows标准的“查找”和“替换”对话框,它允许输入待查找和替换的字符串,“查找”和“替换”对话框是无模式对话框,在编辑中按照如下步骤使用该对话框:
(1)构造CfindReplaceDialog类对象指针,用new操作符为CFindReplaceDialog 类对象分配内存。如CfindReplaceDialog *findreplacedlg=new CfindReplaceDialog ();
(2)通过修改对象的数据成员m_fr初始化对话框中各控件的值或状态。 (3)调用成员函数Create()装载无模式对话框。
(4)应用程序通过CprintDialog类的成员函数获得各种信息。 其常用的成员函数如表7.7。
【上机练习9】利用【上机练习7】的单文档,在其中增加一个对话框,构成一个学生个人
信息登记的操作界面,包含学生姓名、学号、性别、学院及其他信息。 操作步骤如下: 一、建立工程
1. 打开chap7工程。单文档窗口。
2. 选择项目工作区窗口中的ResourceView的资源列表,展开Dialog选项,双击
IDD_ABOUTBOX选项,在右侧会打开一个对话框。该对话框为系统自带的对话框,提供用户使用的应用程序版本和版权声明等消息,用户可对其文字内容进行更改。该对话框与“帮助”菜单项下的“关于”子菜单相对应。
3. 在ResourceView的资源列表中,在Dialog选项上右击,在弹出的快捷菜单中选
InsertDialog命令,Dialog选项下会自动添加IDD_DIALOG1的选项,在右侧打开对
话框供用户编辑。
4. 在对话框上添加静态文本框,一共7个,用属性对话框中的标题,分别显示“学生
个人信息登记”、“姓名”、“学号”、“性别”、“学院”、“其他”和“学生信息”。 5. 在对话框上添加编辑框,一共3个,分别用来显示“姓名”、“学号”和“学生信息”
的内容。
6. 设置编辑框的属性。右击编辑框,打开“属性”对话框。3个编辑框的ID号分别为:
ID_EDIT1,ID_EDIT2,ID_EDIT3。“学生信息”(ID号为ID_EDIT3)的编辑框,在“属性”对话框中选Styles选项卡,选中以下两个复选框:Multiline(允许多行输入),Vertical scroll(当文本行数超过当前可显示范围,增加垂直滑动条) 7. 在对话框上添加单选按钮,一共2个,用来选择“性别”。用属性对话框中的标题
分别设置“男”“女”,不改ID号。
8. 在对话框上添加组合框,用来显示“学院”的信息。在“属性”对话框中选Data
选项卡,输入以下内容:“电气信息学院、自动化学院、机械学院、外语学院、能源环境学院”。每录入一个学院名字,用Ctrl+Enter进行换行。
9. 在对话框上添加复选框,一共2个,用属性对话框中的标题分别设置“班干部”和
“学生会干部”,不改ID号。
10. 至此,对话框上的控件已经添加完毕,调整控件布局。 二、在菜单栏中增加“显示对话框”菜单项
1.选择项目工作区窗口中的ResourceView的资源列表,展开Menu选项,双击IDR_MAINFRAME选项。
2.在右侧编辑区中,添加新菜单项“显示对话框”。
3.再建立一个名为“显示”的子菜单项其ID定义为ID_SHOWDIALOG. 4.为对话框建立新类。回到项目工作区窗口,展开Dialog文件夹,双击IDD_DIALOG1选项,打开前面已经建好的对话框,再打开MFC Class Wizard对话框和Adding a Class对话框,选中Create a new class单选按钮,单击OK按钮,打开new class对话框,在Name文本框中输入“CMYdialog”,然后单击OK按钮。
5.为菜单项“显示对话框”建立函数OnShowdialog。在MFC Class Wizard对话框中: Class name CChap9View
Object IDs ID_SHOWDIALOG//显示菜单的ID号
双击Messages列表框中的COMMAND选项,此时在Member functions列表框中将出现OnShowdialog ON_ID_SHOWDIALOG:COMMAND成员函数。单选“确定”按钮,回到主窗口。
6.为对话框添加变量。右击CChap9View选项,选择Add Member Variable命令,打开Add Member Variable对话框。在Variable Type 文本框中输入“Cmydialog”,在Variable Name文本框中输入”mydialog”,选中“Protected”,然后单击OK按钮。这样就建立了一个名为”mydialog”的“Cmydialog”类保护型对象。
7.添加“显示对话框”函数的语句。展开Cchap7View选项,双击OnShowdialog()选项,(也可以在“建立类向导”中进入函数)在函数体内添加语句:
mydialog.DoModal();//显示对话框
运行该程序,选择“显示对话框/显示”命令,就可以看到运行的对话框了。 三、对话框的编程
1.按Ctrl+W键,打开MFC ClassWizard对话框,选择Member Varables选项卡,在Class name下拉列表中选择Cmydialog选项,在列表框中出现了对话框中控件的ID。
2. 为对话框的控件添加变量,选择某ID号单击Add variable按钮,打开Add Member
variable对话框,按以下表项增加变量。 ID IDC_CHECK1(复选框) IDC_CHECK2(复选框) IDC_COMBO1(组合框) IDC_EDIT1(编辑框) IDC_EDIT2(编辑框) IDC_EDIT3(编辑框) Member variable name Category m_ban m_xuesheng m_xueyuan m_name m_num m_info Value Value Value Value Value Value Variable type BOOL BOOL CString CString CString CString 3.在MFC ClassWizard对话框,选择Member Maps选项卡,为控件增加消息,按以下表项增加消息。 Class name Cmydialog Cmydialog Cmydialog Cmydialog Cmydialog Cmydialog Object IDs IDOK(确定按钮) IDCANCEL(清除按钮) IDC_ CHECK1(复选框1) IDC_ CHECK2(复选框2) IDC_RADIO1(单选框1) IDC_RADIO2(单选框2) Messages BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED 在Cmydialog项目中,可以看到已经自动添加了成员函数和成员变量。
4.在Cmydialog选项上右击,选择Add Member variable命令按以下表项增加成员变量。sex是用来存放选择的单选框的性别值,other是用来存放选择的复选框的“班干部”与“学生干部” 值。
Variable type CString CString Variable name sex other Access public public 5.在Class View选项卡下,展开Cmydialog项,双击Cmydialog[CWnd*pParent=NULL]函数,并将函数体内容修改为:
CMydialog::CMydialog(CWnd* pParent /*=NULL*/) : CDialog(CMydialog::IDD, pParent) { //{{AFX_DATA_INIT(CMydialog) m_ban = FALSE; m_xuesheng = FALSE; m_xueyuan = _T(\ m_num = _T(\ m_info = _T(\ m_name = _T(\ sex=\ other=\ //}}AFX_DATA_INIT }
6.为(复选按钮1)OnCheck1函数添加代码 void CMydialog::OnCheck1() { // TODO: Add your control notification handler code here
other=other+\班干部\}
7.为(复选按钮2)OnCheck2函数添加代码 void CMydialog::OnCheck2() { // TODO: Add your control notification handler code here other=other+\学生会干部\}
8.为(单选按钮1)OnRadio1函数添加代码 void CMydialog::OnRadio1() { // TODO: Add your control notification handler code here sex=\男\}
9.为(单选按钮2)OnRadio2函数添加代码 void CMydialog::OnRadio2()
{ // TODO: Add your control notification handler code here sex=\女\ }
10.为OnOK函数添加代码 // CMydialog message handlers void CMydialog::OnOK()
{ // TODO: Add extra validation here UpdateData(TRUE); m_info=\姓名:\学号:\性别:\学院:\其他:\ UpdateData(FALSE); // CDialog::OnOK(); }
运行程序,选择“显示对话框/显示”命令,就可以看到下面运行的对话框了。