1、C+程序设计教程与实训 主讲:杨志疆2022年4月26日C+程序设计教程与实训2第8章 可视化编程 教学提示: 随着计算机软件工程技术的迅速发展,可视化编程技术已经成为当今软件开发的重要工具和手段,尤其是Visual C+、Delphi、Visual Basic等开发工具的出现,大大推动了可视化编程技术的发展和应用。作为理工科专业的大学生在学习了程序设计课程后,还应掌握一些开发工具,同时也能提高开发应用系统的基本能力。 教学目标: 通过可视化编程的学习,掌握Visual C+等开发工具的基本原理、开发环境、文档视图结构、单文档与多文档程序、对话框和控件,提高实践操作和独立编程的能力。2022年
2、4月26日C+程序设计教程与实训38.1 文档与视图的概念 8.1.1 文档视图结构 8.1.2 单文档(SDI)应用程序 8.1.3 多文档(MDI)应用程序2022年4月26日C+程序设计教程与实训48.1.1 文档视图结构 在文档视图结构里,文档是一个应用程序数据基本元素的集合,它构成应用程序所使用的数据单元;另外它还提供了管理和维护数据的手段。 文档是一种数据源,数据源有很多种,最常见的是磁盘文件。 视图是数据的用户窗口,为用户提供文档的可视的数据显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界面,它把用户的输入转化为对文档中数据的操作。20
3、22年4月26日C+程序设计教程与实训58.1.1 文档视图结构 文档视图结构带来的好处主要有: 将数据操作和数据显示、用户界面分离开 提供标准的操作界面 支持打印预览和电子邮件发送功能 2022年4月26日C+程序设计教程与实训68.1.2 单文档(SDI)应用程序 在单文档界面程序中,用户在同一时刻只能操作一个文档。如Windows中的记事本。 单文档应用程序一般都提供一个File菜单,在该菜单下有一组命令: 新建文档(New) 打开已有文档(Open) 保存(Save) 换名存盘(Save as)等。 2022年4月26日C+程序设计教程与实训78.1.2 单文档(SDI)应用程序 使用
4、Visual C+集成开发环境的AppWizard就可以创建单文档的应用程序框架: 在New对话框的Project Name编辑框中输入项目名为Editor 在AppWizard的第一步中选择Single document(单文档) AppWizard第二和第三步选项使用默认值 AppWizard后面的几页对话框都使用默认值。最后可得到的结果 :2022年4月26日C+程序设计教程与实训88.1.3 多文档(MDI)应用程序 多文档界面(Multiple Document Interface,MDI)是在一个应用程序中能够同时处理两个或者更多个窗体的界面形式。 一个多文档界面应用程序也能操作文
5、档,但它允许同时操作多个文档。Microsoft Excel就是这样的例子。可以打开多个文件,可以通过切换活动窗口激活相应的文档进行编辑。 多文档应用程序也提供一个File菜单,用于新建、打开、保存文档。 与单文档应用程序不同的是, 它往往还提供一个Close(关闭)菜单项,用于关闭当前打开的文档。 多文档应用程序还提供一个窗口菜单,管理所有打开的子窗口,包括对子窗口的新建、关闭、层叠、平铺等。关闭一个窗口时,窗口内的文档也被自动关闭。2022年4月26日C+程序设计教程与实训98.1.3 多文档(MDI)应用程序Visual C+提供了一整套设计MDI应用程序的组件,可以很容易、很快速地开发
6、一个MDI的应用程序。在File菜单中选择New菜单项,在弹出New对话框的Projects选项卡选中列表中的选项MFC App Wizard(exe),并在Project name(工程名)的编辑框内输入工程名称:MdiForm,单击OK按钮后,进行App Wizard选项的各个步骤。第一步,接收系统的默认值,即选中Multiple documents单选按钮。第二步,接收系统默认设置。第三步,去掉复选框ActiveX Controls,其他设置接收系统默认设置。第四步,去掉复选框Printing and print preview,其他接收系统默认设置。第五步,接收系统默认设置。第六步,接
7、收系统默认设置。单击OK按钮后,结束App Wizard的设置。2022年4月26日C+程序设计教程与实训108.2 对话框和控件 8.2.1 对话框 8.2.2 常用控件 8.2.3 控件使用举例2022年4月26日C+程序设计教程与实训118.2.1 对话框 对话框的基本概念 对话框(Dialog)实际上是一个窗口。在MFC中,对话框的功能被封装在了CDialog类中,CDialog类是CWnd类的派生类。 对话框分为: 模态对话框: 只能与当前对话框进行交互 非模态对话框:可以与其他对话框交互 从MFC编程的角度来看,一个对话框由两部分组成: 对话框模板资源:用于指定对话框的控件及其分布
8、。Windows根据对话框模板来创建并显示对话框。 对话框类:用来实现对话框的功能。由于对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类,以完成特定的功能。2022年4月26日C+程序设计教程与实训128.2.1 对话框 创建对话框应用程序 启动Visual C+,在Visual C+中,New命令,弹出New对话框来新建一个工程项目。 在Project name编辑框中输入要创建的项目名称:Mydialog。单击OK按钮后,进行App Wizard的各个步骤。 进入MFC App Wizard-Step 1对话框 ,选中Dialog based单选按钮,在语言支持资源中选
9、择Chinese(PRC) (APPWZCHS.DLL) 弹出MFC AppWizard-Step 2 of 4对话框 ,默认的设置 。 弹出MFC AppWizard-Step 3 of 4对话框,选用默认设置 。 弹出MFC AppWizard-Step 3 of 4对话框,不需要做任何修改,单击Finish按钮,完成项目创建向导的有关设置。 在指定的目录下生成应用程序的框架所必须的全部文件。 编辑和运行对话框应用程序 在对话框中,可以进行可视化的设计、布局安排各种控件、定义编辑对话框各种资源。 2022年4月26日C+程序设计教程与实训138.2.2 常用控件 对话框实际上只提供了一个窗
10、口,用户与对话框的交互还要利用对话框中的控件进行。 控件功能对应控件类Static Text (静态正文)显示正文,一般不能接受输入信息CStaticPicture (图片)显式位图、图标、方框和图元文件,一般不能接受输入信息CStaticEdit Box (编辑框)输入并编辑正文,支持单行和多行编辑CEditPushbutton (命令按钮)响应用户的输入,触发相应的事件CButtonCheck Box (检查框)用作选择标记,可以有选中和不选中两种状态CButtonRadio Button(单选按钮)用来从两个或多个选项中选中一项CButtonGroup Box (组框)显示正文和方框,主
11、要用来将相关的一些控件聚成一组CButtonList Box (列表框)显示一个列表,用户可以从该列表中选择一项或多项CListBoxCombo Box (组合框)是一个编辑框和一个列表框的组合,分为简易式、下拉式和下拉列表式CComboBoxScroll Bar (滚动条)主要用来从一个预定义范围值中迅速而有效地选取一个整数值CScrollBar2022年4月26日C+程序设计教程与实训148.2.2 常用控件 控件在Control工具栏上都有对应的工具按钮。可以利用这些工具按钮在对话框中进行可视化设置控件。 2022年4月26日C+程序设计教程与实训15 对话框工具条 2022年4月26日
12、C+程序设计教程与实训16对控件的操作和使用一般按以下步骤进行 在对话框资源中添加控件。通过属性对话框可以对控件的风格进行设置。 通过定义与控件相关的控件类的对象或相应的数值变量。 通过定义控件的消息响应函数,生成对话框类的成员函数。 在消息响应函数中添加适当的代码。2022年4月26日C+程序设计教程与实训178.2.2 常用控件 1静态控件(CStatic) 在控件工具窗口中选择Aa,在编辑对话框窗口中单击,创建一个静态文本,在此静态文本上单击鼠标右键,选择Properties(属性)选项,如图8.20所示。弹出属性对话框,对此文本进行设置。修改Caption编辑框内的内容:姓名。 202
13、2年4月26日C+程序设计教程与实训18 2按钮类控件 按钮类控件是窗口类名被系统预定义为BUTTON的一类控件,该类控件用于响应用户的鼠标按键操作,常见的按钮有三种: 按键按钮按键按钮Push Button :可以产生某个动作,执行某个命令,:可以产生某个动作,执行某个命令,如确认或取消等命令。如确认或取消等命令。 单选按钮单选按钮Radio Box:用来从多项中选择一项,一般都是成组:用来从多项中选择一项,一般都是成组使用。使用。 复选按钮复选按钮Check Box :用作选择标记,有选中、非选中和不确:用作选择标记,有选中、非选中和不确定等状态。定等状态。2022年4月26日C+程序设计
14、教程与实训19 3编辑框控件 文本编辑框控件是一个让用户从键盘和编辑文本的矩形窗口,用户可以通过它进行单行或多行的文本输入,也可以进行数值、时间和日期数据的输入。当编辑框被激活时,具有输入焦点,出现一个闪动的插入符。 用对话框编辑器可以方便地设置编辑控件的属性和风格。 2022年4月26日C+程序设计教程与实训20 举一个简单的例子说明编辑框的使用方法。 用MFC AppWizard(exe)创建一个项目名为MyDialog的基于对话框的应用程序。P221Updatedata(TRUE) = 将控件的值赋值给成员变量;(默认)Updatedata(FALSE) = 将成员变量的值赋值给控件20
15、22年4月26日C+程序设计教程与实训21 void CDdDlg:OnExit() OnOK(); void CDdDlg:OnCalculate() UpdateData();float area=(float)2*3.14*m_Radius*m_Radius;m_Area.Format(%8.2f,area);UpdateData(FALSE); 2022年4月26日C+程序设计教程与实训22关于编辑框的赋值和取值向编辑框中赋值和取值时:向编辑框中赋值和取值时:1 1、建一个、建一个 控制型的变量,如控制型的变量,如m_edit1m_edit1,用,用CWndCWnd的的SetWindo
16、wText() SetWindowText() 和和GetWindowText()GetWindowText()来赋值和取值。来赋值和取值。m_edit1.SetWindowText(Hello);m_edit1.SetWindowText(Hello); 或者或者GetDlgItem(IDC_EDIT1)-SetWindowText(str);GetDlgItem(IDC_EDIT1)-SetWindowText(str);2 2、建立一个控制型的变量,如、建立一个控制型的变量,如m_edit1,m_edit1,用用SetDlgItemTextSetDlgItemText()和()和GetD
17、lgItemTextGetDlgItemText()来赋值和取值()来赋值和取值CString Str=Hello:CString Str=Hello:m_edit1.SetDlgItemText(IDC_EDIT1,str);m_edit1.SetDlgItemText(IDC_EDIT1,str);2 2、直接建一个、直接建一个 数值形的变量数值形的变量 如如m_strEdit;m_strEdit; 用用 UpdateData UpdateData()()来控制得到变量,还是更新变量。来控制得到变量,还是更新变量。/取值取值 UpdateData(TRUE); UpdateData(TRU
18、E); CString CString buf buf = = m_Edit1; m_Edit1; /赋值赋值 m_Edit1=ok!; m_Edit1=ok!; UpdateData(FALSE); UpdateData(FALSE);2022年4月26日C+程序设计教程与实训23 4列表框 列表框是一个可以列有多个项目让用户选择的列表控件,可往列表框中添加或删除某些项,并可自动提供滚动条让用户浏览列表框中数目较多的项目。 ListBox窗口用来列出一系列可供用户从中选择的项,这些项一般以字符串的形式给出。MFC类ClistBox封装了标准列表框控件,其成员函数提供了对标准列表框的绝大多数操
19、作,下表列出了一些重要的成员函数。2022年4月26日C+程序设计教程与实训242022年4月26日C+程序设计教程与实训25 5组合框 组合框(ComboBox)的功能是将列表框与编辑框控件结合在一起,完成一些较为复杂的输入功能。组合框有: 简单组合框 下拉组合框 下拉式列表框2022年4月26日C+程序设计教程与实训262022年4月26日C+程序设计教程与实训27滚动条分为水平滚动条和垂直滚动条两种,通常使用滚动条来进行定位之类的操作。2022年4月26日C+程序设计教程与实训28lTopLeft表示将滚动条的左上边与由函数CreateWindowEx的参数定义的矩形的左上边对齐;lBu
20、ttonRight则表示与右下边对齐;l该属性的默认值为None,即不进行任何对齐操作2022年4月26日C+程序设计教程与实训292022年4月26日C+程序设计教程与实训30当对滚动条操作后,所在的对话框会接受到WM_HSCOLL消息和WM_VSCOLL消息。在这两个消息的响应函数中可以判断是哪一个滚动条发生了变化,然后进行相应的操作。 CWnd类中定义了处理该消息的成员函数OnHScoll 和OnVScoll。 2022年4月26日C+程序设计教程与实训31OnHScoll成员函数的原型 :afx_msg void OnHScoll(UINT nSBCode,UINT nPos,CScr
21、ollBar *pScrollBar);2022年4月26日C+程序设计教程与实训328.2.3 控件使用举例P225 设计这个应用程序包括两个对话框: 一个主对话框(学生信息管理),用来打开另一个对话框及查询学生信息; 另一个对话框(输入学生信息),用来输入学生的信息,它是通过主对话框的按钮来打开运行的。 2022年4月26日C+程序设计教程与实训33本节例子主要用来说明对话框和控件的使用。例子的实现功能是在程序主界面出现一个用户调查表图所示:2022年4月26日C+程序设计教程与实训34操作步骤(创建工程):步骤1.在VC+集成开发环境中,通过菜单File | New,弹出New对话框;步
22、骤2.在Projects标签中选择MFC App Wizar(exe),在Project name中输入“Eg7_1”,Location读者可以自己选择; 步骤3.按下OK按钮,在弹出的MFC App Wizard Step-1对话框中选择程序框架为单文档框架,即选中Single Document; 步骤4.按下OK按钮,在弹出的New Project Information对话框中按下OK按钮后等待创建完相应的工程。 2022年4月26日C+程序设计教程与实训35 在工作区中选中Resourse View标签展开Eg7_1Resourse | Dialog条目,可以察看当前工程中的对话框资源
23、; 选择Dialog条目,单击鼠标右键,弹出活动菜单,选择菜单Insert Dialog命令; 将鼠标移动到对话框资源上,单击鼠标右键,在弹出的菜单中选择Properties菜单命令,将对话框的标题设置为“用户调查表”标识号不变。2022年4月26日C+程序设计教程与实训36 删除对话框资源本来就有的静态控件,利用鼠标将按钮OK和CANCEL移动到对话框的底部,将按钮的标题分别改为确定,取消。 在工具栏中的静态控件上单击一下鼠标左键,然后在对话框资源中按下鼠标左键拖动,出现一个矩形框,松开鼠标左键,则在对话框资源中出现一个静态控件,将该静态控件的标题改为“姓名”其标识号改为IDC_STATIC
24、_NAME。 2022年4月26日C+程序设计教程与实训37 按照上面的方法在对话框资源上加入其它的控件,它们的类型、标题和标识号如下:2022年4月26日C+程序设计教程与实训382022年4月26日C+程序设计教程与实训39资源创建完毕以后,还需要创建一个与对话框资源相关联的类,这个类需要从对话框类派生,然后定义一个派生类的对象,通过派生类的对象使对话框的功能得以实现。2022年4月26日C+程序设计教程与实训40 在对话框资源上单击右键,在弹出的菜单中选择Class Wiizard,在MFC Class WIizard对话框弹出以后紧接着弹出Adding Class。在打开对话框的过程中
25、,如果系统监测到有新建的对话框资源,菜单资源等,并且该资源没有与之相关联的类,就会弹出对话框,询问是否创建新的类 。2022年4月26日C+程序设计教程与实训41 在Adding Class对话框中确认默认选择Create a new class,单击按钮弹出New Class对话框,在编辑框中输入新建类的名称CEg7-1Dialog,其他设置取默认值。 单击OK按钮后显示出MFC Class WIizard对话框 。 2022年4月26日C+程序设计教程与实训42 在MFC Class Wiizard对话框中默认的Projects和 Class name项为Eg7-1和CEg7-1Dialo
26、g。 选中MemberVariables标签中的Control Ids项中的IDC_EDIT_NAME条目,单击Add Variables按钮,将弹出Add Variables对话框。 在Add Variables对话框中添加成员变量m_Name,与编辑控件IDC_EDIT_NAME相关联,类型为CString ,catogory为Value。 单击OK按钮,添加变量完成。 2022年4月26日C+程序设计教程与实训43 Add Variables 对话框 :2022年4月26日C+程序设计教程与实训44按照上述方法为其它控件添加相关联的变量,如表所示:2022年4月26日C+程序设计教程与实
27、训45成员变量的初始化需要重载对话框类的OnInitDialog()函数。OnInitDialog是一个虚函数,它在对话框显示之前被调用,用户可以通过重载该函数对对话框中的各种控件进行初始化。 操作如下:打开MFC Class Wizzard,选中标签Member Map标签中的Control IDs项中的IDC_COMBO1条目,在Messages里面选择WM_INITDIALOG,单击Add Fuction按钮,然后单击Edit Code按钮,进入源程序,编辑OnInitDialog()函数。 2022年4月26日C+程序设计教程与实训46增加以后的代码如下: BOOL CInvest:O
28、nInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_Province.AddString(湖南湖南);m_Province.AddString(河南河南);return TRUE; / return TRUE unless you set the focus to a control 2022年4月26日C+程序设计教程与实训47需要在用户选择了省份以后更新有关城市的信息,这就需要在组合框中增加消息响应函数,功能是当用户打开第二个组合框的下拉式列表框的时候及时更新相关省份的城市信息。操作步骤:打
29、开MFC Class Wizard,选中标签Member Map标签中的Control IDs项中的IDC_COMBO2条目,在Messages里面选择CBN_DROPDOWN,单击“Add Fuction”按钮,接受系统默认的函数名,然后单击“Edit Code”按钮,进入源程序,编辑函数如下:2022年4月26日C+程序设计教程与实训48void CEg7_1Dlg:OnDropdownCombo2() / TODO: Add your control notification handler code hereCString m_1;m_Province.GetWindowText(m_
30、1);if(m_1=河南河南)m_City.ResetContent();m_City.AddString(郑州郑州);m_City.AddString(洛阳洛阳);if(m_1=湖南湖南)m_City.ResetContent();m_City.AddString(长沙长沙);m_City.AddString(岳阳岳阳);2022年4月26日C+程序设计教程与实训49在Workspace工作区打开CLassView,选中要加入函数的类CEg7_1Dlg,点击鼠标右键,在弹出的对话框中选择“Add Member Funtion” 。在Funtion Type(函数类型)中填入CString,表
31、示函数类型是字符串对象;在Funtion Declareation(函数声明)中填入GetRadio。该函数用来获得单选按钮的信息。 2022年4月26日C+程序设计教程与实训50然后在CEg7_1Dlg.cpp文件中找到该函数,添加函数代码如下:CString CEg7_1Dlg:GetRadio() CString Radiotext; UINT m_6=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);if(m_6=IDC_RADIO1) Radiotext=男男;else Radiotext=女女;return(Radiotext);2022年4
32、月26日C+程序设计教程与实训51说明:CWnd的成员函数:GetCheckedRadioButton()返回指定组中的第一个所选中的单选钮的ID,如果没有按钮选中则返回0。该成员函数的原型: int GetCheckedRadioButton(int nIDFirstButton,int nIDLastButton);其中,第一个参数是nIDFirstButton同一组中的第一个单选按钮的ID, nIDLastButton是同一组中最后一个单选按钮的ID。2022年4月26日C+程序设计教程与实训52建立第二个成员函数: 同样为CEg7_1Dlg类加入另一个成员函数GetCheck()以获得
33、复选框的信息。在Funtion Type(函数类型)中填入CString,表示函数类型是字符串对象;在Funtion Declareation(函数声明)中填入GetCheck。 在CEg7_1Dlg.cpp文件中找到该函数,添加函数代码如下: 2022年4月26日C+程序设计教程与实训53函数代码:CString CEg7_1Dlg:GetCheck() intm=0; CString str,Checktext; for(int i=IDC_CHECK1;iGetCheck(); if (m=1) CWnd:GetDlgItemText(i,str); str+=; Checktext+=
34、str; return(Checktext);2022年4月26日C+程序设计教程与实训54函数代码分析:说明: CButton类的成员函数GetDlgItem()得到指向各个复选框控件的指针; CButton类的成员函数GetCheck()用来返回复选框是否被选中,选中则返回1; CWnd:GetDlgItemText()用来获得所选中的复选框的标题 2022年4月26日C+程序设计教程与实训55 该例将在OnOK()函数中调用这两个成员函数。打开对话框资源,双击“确定”按钮,接受系统默认的函数名,重载OnOK()函数: void CMy21Dlg:OnOK() / TODO: Add ex
35、tra validation here CString m_1,m_2,m_3,str; m_3=GetRadio(); /调用成员函数以得到单选按钮调用成员函数以得到单选按钮的信息的信息 str=GetCheck(); /调用成员函数以得到复选框中的调用成员函数以得到复选框中的信息信息 2022年4月26日C+程序设计教程与实训56重载以后的OnOK()函数源代码如下: void CMy21Dlg:OnOK() / TODO: Add extra validation here UpdateData(TRUE); / 将对话框控件中的内容传将对话框控件中的内容传给其成员变量给其成员变量CSt
36、ring m_1,m_2,m_3,str;m_3=GetRadio();str=GetCheck();m_Province.GetWindowText(m_1);m_City.GetWindowText(m_2);SetDlgItemText(IDC_STATIC_NAME, );2022年4月26日C+程序设计教程与实训57重载以后的OnOK()函数源代码(续) SetDlgItemText(IDC_STATIC_EMAIL, );SetDlgItemText(IDC_STATIC_EMAIL, );SetDlgItemText(IDC_STATIC_EDIT, );SetDlgItemTe
37、xt(IDC_STATIC_EDIT, );SetDlgItemText(IDC_STATIC_SEX, );SetDlgItemText(IDC_STATIC_SEX, );SetDlgItemText(IDC_STATIC_HOBBY, );SetDlgItemText(IDC_STATIC_HOBBY, );SetDlgItemText(IDC_STATIC_PROVINCE, );SetDlgItemText(IDC_STATIC_PROVINCE, );SetDlgItemText(IDC_STATIC_CITY, );SetDlgItemText(IDC_STATIC_CITY,
38、);m_Display.SetWindowText(m_Name+,+m_3+,+m_1+m_2+m_Display.SetWindowText(m_Name+,+m_3+,+m_1+m_2+人也。人也。nn您的兴趣有您的兴趣有:+str+n+str+n+您的地址您的地址:+m_Email+n+:+m_Email+n+您要说您要说的话的话:+m_Edit);:+m_Edit);m_Display.ShowWindow(TRUE);m_Display.ShowWindow(TRUE);m_City.ShowWindow(FALSE);m_City.ShowWindow(FALSE); m_Pro
39、vince.ShowWindow(FALSE); m_Province.ShowWindow(FALSE);(CEdit(CEdit* *)GetDlgItem(IDC_EDIT_NAME)-ShowWindow(FALSE);)GetDlgItem(IDC_EDIT_NAME)-ShowWindow(FALSE);(CEdit(CEdit* *)GetDlgItem(IDC_EDIT_EMAIL)-ShowWindow(FALSE);)GetDlgItem(IDC_EDIT_EMAIL)-ShowWindow(FALSE);(CEdit(CEdit* *)GetDlgItem(IDC_EDI
40、T_EDIT)-ShowWindow(FALSE);)GetDlgItem(IDC_EDIT_EDIT)-ShowWindow(FALSE);GetDlgItem(IDC_STATIC1)-ShowWindow(FALSE);GetDlgItem(IDC_STATIC1)-ShowWindow(FALSE);2022年4月26日C+程序设计教程与实训58重载以后的OnOK()函数源代码(续) GetDlgItem(IDC_STATIC2)-ShowWindow(FALSE);(CButton*)GetDlgItem(IDC_RADIO1)-ShowWindow(FALSE);(CButton*
41、)GetDlgItem(IDC_RADIO2)-ShowWindow(FALSE);for(int j=IDC_CHECK1;jShowWindow(FALSE);(CButton*)GetDlgItem(IDOK)-ShowWindow(FALSE);SetDlgItemText(IDCANCEL,退出退出 ); 2022年4月26日C+程序设计教程与实训592022年4月26日C+程序设计教程与实训60 调查结果 :2022年4月26日C+程序设计教程与实训618.2.3 控件使用举例 设计这个应用程序包括两个对话框: 一个主对话框(学生信息管理),用来打开另一个对话框及查询学生信息; 另
42、一个对话框(输入学生信息),用来输入学生的信息,它是通过主对话框的按钮来打开运行的。 2022年4月26日C+程序设计教程与实训628.3 通用对话框 8.3.1 颜色对话框 8.3.2 文件对话框 8.3.3 查找与替换对话框 8.3.4 字体对话框 8.3.5 打印对话框通用对话框类用途CcolorDialog选择颜色CfileDialog选择文件名,用于打开和保存文件CfindReplaceDialog正文查找和替换CFontDialog选择字体CPrintDialog打印和打印设置2022年4月26日C+程序设计教程与实训638.3.1 颜色对话框 颜色对话框类为CColorDialo
43、g,用于实现Color(颜色选择)通用对话框。 2022年4月26日C+程序设计教程与实训648.3.2 文件对话框 文件对话框类为CFileDialog,用于实现文件选择对话框,以支持文件的打开和保存操作。 2022年4月26日C+程序设计教程与实训658.3.3 查找与替换对话框 CFindReplaceDialog类用于实现Find(搜索)和Replace(替换)对话框,这两个对话框都是非模态对话框,用于在正文中搜索和替换指定的字符串。 2022年4月26日C+程序设计教程与实训668.3.4 字体对话框 CFontDialog类支持Font(字体)对话框,用来让用户选择字体。 2022
44、年4月26日C+程序设计教程与实训678.3.5 打印对话框 CPrintDialog类支持Print(打印)和Print Setup(打印设置)对话框,通过这两个对话框,用户可以进行与打印有关的操作。 2022年4月26日C+程序设计教程与实训688.4 菜单 8.4.1 菜单资源 8.4.2 编辑菜单资源 8.4.3 映射菜单消息 8.4.4 快捷菜单2022年4月26日C+程序设计教程与实训698.4.1 菜单资源 打开菜单编辑器来编辑菜单 使用菜单编辑器,可以打开Menu Item Properties(菜单项属性)对话框,此对话框列出了各个菜单项的详细信息,并允许更改其中的一些信息。
45、2022年4月26日C+程序设计教程与实训708.4.2 编辑菜单资源2022年4月26日C+程序设计教程与实训718.4.3 映射菜单消息2022年4月26日C+程序设计教程与实训728.4.4 快捷菜单2022年4月26日C+程序设计教程与实训738.5 小 结 本章主要讲述了文档、视图的基本概念:文档是数据源,它构成应用程序的数据,另外,它还提供存储和管理数据的手段。视图为用户提供了数据的可视显示,还提供了操作数据的界面。另外本章还介绍了两种类型的文档视结构程序:单文档应用程序和多文档应用程序。 本章对VC+编程中经常用到的按钮控件、编辑控件、树形控件、列表控件和组合框控件等Windows预定义的标准控件的动态创建、风格设置、通知消息的响应等内容作了具体的讲述。通过学习本章讲述的内容,读者可以掌握这些常用控件的一般使用方法。对于本章未提到的其他Windows标准控件,读者也可通过类似的方法予以实现。