vc++对话框制作与编程-Dialog
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目三:文档视图结构
实验学时:6
实验类型:设计性
实验目的:
1.理解文档-视图结构
2.掌握SDI程序结构和开发
3.理解MDI程序结构和开发
4.设计支持多文档多视图结构的应用程序
实验内容与说明
第一部分:对话框制作与编程
本例将设计一个能够应用对话框进行参数选择、并运用这些参数进行窗口绘图的MFC程序。请通过此例掌握对话框资源的制作以及模态对话框的编程。同时理解文档视图结构。
第一步:新建工程
新建一个MFC AppWizard(exe)类型的工程,工程取名为DlgDemo。注意路径可能与本地磁盘不同。
修改应用程序类型为Single document。
保持其它设置不变,点击Finish按钮(包括随后的OK按钮)结束工程的创建。
第二步:窗口绘图
为简单起见,本例只打算在视图窗口内绘制一个矩形,该矩形的长度、宽度以及它们的单位都通过对话框进行选择。这些关于图形的关键数据一般应该保存在文档类中,视图类在需要绘图时,就从文档类中读取这些数据,这是文档视图结构的基本运行方式。
为此,需要向文档类CDlgDemoDoc中添加数据成员。在工程的类视图ClassView中右键单击文档类CDlgDemoDoc,选择Add Member Variable...,弹出添加数据成员的对话框。
在下列对话框中添加数据成员m_nWidth。
继续上述步骤,添加数据成员m_nHeight。
继续上述步骤,添加数据成员m_nUnit。
为提供对上述三个protected数据成员的访问,在文档类中提供public访问函数。在工程的类视图ClassView中右键单击文档类CDlgDemoDoc,选择Add Member Function...,弹出添加成员函数的对话框。
在下列对话框中添加成员函数GetWidth以访问数据成员m_nWidth。
继续上述步骤,在下列对话框中添加成员函数GetHeight以访问数据成员m_nHeight。
继续上述步骤,在下列对话框中添加成员函数GetUnit以访问数据成员m_nUnit。
此时可以看到:在头文件DlgDemoDoc.h中,文档类CDlgDemoDoc中增加了如下数据成员和成员函数。
切换到源文件DlgDemoDoc.cpp中,定义刚才添加的三个函数。
同时修改文档类CDlgDemoDoc的构造函数(在源文件DlgDemoDoc.cpp中),在其中初始化这三个数据成员。
对于数据成员m_nWidth和m_nHeight,数据4和2分别表示数值,至于它们代表的单位还需要根据数据成员m_nUnit的取值来定。当m_nUnit取值为0时,单位表示英寸(Inches),此时可以把映射模式设为MM_LOENGLISH。当m_nUnit取值为1时,单位表示毫米(millimeters),此时可以把映射模式设为MM_LOMETRIC。当m_nUnit取值为2时,单位表示像素(Pixels),此时把映射模式设为MM_TEXT。这在下面的函数中会体现出来。
因此,上述构造函数取值,表示默认绘制的矩形宽为4(m_nWidth = 4),高为2(m_nHeight = 2),它们的单位为英寸(m_nUnit = 0)。
最后在视图类CDlgDemoView中读取文档类存放的数据(宽、高和单位),然后绘制矩形。打开源文件DlgDemoView.cpp中的函数CDlgDemoView::OnDraw,这是实现绘图的主战场。
上述程序,首先通过文档类CDlgDemoDoc的指针pDoc读取文档中的数据,然后分别存放到变量width、height、unit中。接着创建一把粉色(RGB (255, 0, 255))的画刷brush。最后根据不同的单位取值,分别设置不同的映射模式,并调用函数Rectangle绘制矩形。请注意该函数的参数取值(为什么有正负之分?)。
运行该程序,可以得到如下结果。
第三步:制作对话框资源
为了实现从对话框动态选择设计参数,下面首先制作对话框资源。需要设计的对话框如下所示。
在工程的资源视图ResourceView中,展开Dialog项,然后单击右键,选择Insert Dialog命令。
此时程序进入对话框设计界面。在待设计的对话框上右键单击,选择属性Properties,首先设置该对话框的属性。
在对话框属性(Dialog Properties)窗口,主要设置该对话框的ID为IDD_DLG_OPTIONS,标题Caption为Options。至于对话框的风格Style,可以浏览一遍,暂时不用设置。不过,也可以进行一些设置,看看它们的效果。按回车键,使得该属性窗口消失。
此时,待设计的对话框的标题变为Options。
把左键放置在对话框右下角的锚点上,待光标变成45度倾斜的双箭头,按下并拖动,以改变对话框的的大小。
从控件工具箱Controls中分别拖动两个标签(Static Text)和两个编辑框(Edit Box),放置到对话框合适的位置。在标签控件上右键单击,选择属性Properties。在属性窗口修改两个标签的Caption 分别为Width和Height,如下图所示。
同时修改两个编辑框控件的ID分别为IDC_WIDTH和IDC_HEIGHT。如下是设置两个编辑框控件属性时的窗口。
从控件工具箱中拖动一个组选框(Group Box)控件放置到对话框中,拖动锚点以调整它的大小。在该控件的属性窗口设置Caption为Unit。注意不要设置ID。
从控件工具箱中连续拖动三个单选按钮(Radio Button)放置到组选框中的合适位置,注意一定要连续。右键依次单击三个按钮,分别进行设置。其中第一个按钮的属性最为重要,请按照下图设计。
选项Group使得接下来的按钮自动成为一组,它们只需要设置一个ID即可。
对余下两个按钮分别如下设置它们的Caption。注意不要设置ID。