vc创建向导对话框.doc_第1页
vc创建向导对话框.doc_第2页
vc创建向导对话框.doc_第3页
vc创建向导对话框.doc_第4页
vc创建向导对话框.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.6.4 创建向导对话框本小节将介绍如何来创建一个一般属性页对话框。【实例6-5】 创建向导对话框光盘路径/06/dialog_5/实例目的创建向导对话框1创建工程在IDE中依次选择“File”“New”菜单命令,或直接按快捷键“Ctrl+N”,打开“New”对话框。在“New”对话框中单击“Projects”选项卡,在列表框中选择“MFC AppWizard(.exe)”项,在“Project name”文本框中输入“dialog_5”,其他使用默认值,单击“OK”按钮,弹出“MFC AppWizard-Step1”对话框。在“MFC AppWizard-Step1”对话框中,选中“Multiple Document”单选按钮,其他使用默认值,然后单击“Finish”按钮,在弹出的“New Project Information”对话框中单击“OK”按钮,就可以完成工程的创建。2创建弹出属性页对话框的菜单在上面创建的对话框中添加一个菜单项下挂一个菜单,菜单命令的消息响应函数用来弹出一个向导对话框。下面首先在菜单资源中添加菜单项和下拉菜单。在工作区的Resource View标签中双击“dialog_5 resource”“Menu”“IDR_dialog_5 TYPE”条目,打开菜单资源。选中菜单资源中的“查看”菜单,弹出下拉的菜单,选中下面的一个空白菜单项。单击鼠标右键,选中弹出菜单的Properties菜单命令,弹出属性对话框,单击其中的Keep Visible按钮,使属性对话框始终显示在前端。选中General标签中的Separator,在菜单资源中添加一个分隔条,同时在最下面又自动产生一个空白菜单。选中空白菜单,在属性对话框的General中输入ID_VIEW_WIZARD,在Caption中输入“向导对话框(&W)”,同时下面又会自动增加一个空白的菜单。此时如果编辑、链接和运行程序,可以看到新增加的菜单项是灰色的。下面为刚刚创建的菜单项增加消息响应函数。通过菜单“View”“ClassWizard”打开MFC ClassWizard对话框,在Class name项中选择CDialog_5View,在Object IDs中选择ID_VIEW_WIZARD,在Message中选择消息COMMAND,单击“Add Function”按钮添加菜单命令的消息响应函数。函数名取默认值。3创建向导对话框通过往工程中添加组件来创建向导对话框的操作与上面创建一般属性页的过程基本一致。通过菜单命令“Project”“Add to Project”“Components and Controls”打开对话框“Components and Controls Gallery”,如图6-40所示。在“Components and Controls Gallery”对话框中的目录列表中双击“Visual C+ Components”条目,目录列表改变,拖动滚动条,找到“Wizard”项并选中,如图6-47所示。在图6-40中,单击“Insert”按钮,在弹出的“Micrsoft Visual C+”消息对话框中单击“确定”按钮,弹出“Property Sheet Wizard”对话框。在“Property Sheet Wizard”对话框中选择所要添加的属性框类型。默认的是一般类型的属性框即选中的是“Property Sheet”,单击“下一步”按钮。在紧接着弹出的对话框中的“Support previewing”复选框要求确认是否在属性框中添加预览功能,默认值为不添加预览功能。保持默认值,单击“下一步”按钮。在接着弹出的对话框中要求选择在哪个类中对属性框进行操作。通过“ComboBox”控件,选中CDialog_5View 。单击“下一步”按钮。在接着弹出的对话框中,要求确认属性框中的属性页个数,默认值为5。保持默认值,单击“下一步”按钮。在接着弹出的对话框中要求确认将要添加的CPropertySheet类和CPropertyPage类的派生类的名称。可以通过单击Change按钮来改变。保留默认值,单击“完成”按钮。为了与一般属性页对话框区别,改变默认值如下。将CPropertySheet类的派生类名称由CMyPropertySheet改为CMyWizardSheet,将头文件名和源文件名分别改为MyWizardSheet.h和MyWizardSheet.cpp。将CPropertyPage1类的派生类名称由CMyPropertyPage1改为CMyWizardPage1,头文件名和源文件名分别改为MyWizardPage1.h 和MyWizardPage1.cpp。将CMyPropertyPage2改为CMyWizardPage2。将CMyPropertyPage3 改为CMyWizardPage3。将CMyPropertyPage4 改为CMyWizardPage4。将CMyPropertyPage5 改为CMyWizardPage5。改变完毕,“Property Sheet Wizard”对话框显示如图6-48所示。图6-47 选中“Wizard”项图6-48 “Property Sheet Wizard”对话框修改完毕单击“完成”按钮。通过上述步骤,在程序中自动加入了下面的一些内容:一个CPropertySheet类的派生类CMyWizardSheet。5个CPropertyPage类的派生类:CMyWizardPage1CMyWizardPage5。与CMyWizardPage1CMyWizardPage5类相关联的对话框资源。在Dialog_5View.cpp文件的头部添加了一条包含语句:#include MyWizardSheet.h在CDialog_5View类中添加了CDialog_5View:OnWizard ()函数。只要调用CDialog_5View:OnWizard ()函数就可以弹出刚刚创建的向导对话框。下面在菜单“Dialog”“向导对话框”的响应函数中调用该函数。定位到函数CDialog_5View:OnWizard (),加入下面的代码:编译、链接和运行程序,测试向导对话框的效果,如图6-49所示。通过运行,可以发现目前在5个向导对话框中,页面和按钮始终是一样的,并没有因为在第一页而使按钮“上一页”变灰,也没有在最后一页将按钮“下一页”变为“完成”按钮。这些工作要通过手工添加一些代码来实现。图6-49 向导对话框另外,如果查看对话框资源,可以发现:虽然在创建向导对话框的过程中,为了和前面创建的一般属性页对话框区别,将默认的类名称和文件名作了相应的修改。但是,自动创建的对话框资源的标识号却没有作相应的修改。其中,标识号为IDD_PROPPAGE1和IDD_PROPPAGE2的对话框资源属于一般属性页的资源,标识号为IDD_PROPPAGE11、IDD_PROPPAGE21、IDD_PROPPAGE3、IDD_PROPPAGE4和IDD_PROPPAGE5的对话框资源属于向导对话框的资源。如果要修改对话框资源的标识号,仅仅通过修改属性框中的“General ID”项的内容是不够的,而要将工程中所有的相应的标识号改变。具体操作时可以先通过菜单“Edit”“Find in Files”查找到所有使用原来标识号的地方,然后一一修改为新的标识号。下面为CMyWizardShee类定义一个全局指针,这样使用时比较方便,因为: CMyWizardPage1CMyWizardPage5类的对象是作为CMyWizardSheet类的成员变量 存在的,如果定义了CMyWizardSheet类的全局指针,可以在CMywizardPage1CMyWizardPage5类中通过该指针方便地调用属于CPropertySheet类的成员函数。比如调用对按钮进行控制的SetWizardButtons成员函数。通过CMyWizardSheet类的全局指针,可以在一个属性页中方便地调用另一个属性页中的变量,使得向导对话框能够连续起来。为此,下面在CDialog_5View 类中定义一个CMyWizardSheet类的全局指针,并通过该指针在不同的属性页中对属性框中的按钮模式进行设置。步骤如下。在文件CDialog_5.cpp的头部,紧接着include语句后面添加下面的语句:CMyWizardSheet*m_pWizardSheet ; /全局指针定义定位到函数CDialog_5View:OnWizard(),将内容改变如下:在文件MyWizardPagel.cpp的头部,其他include 语句之后,加入对全局指针m_pWizardSheet进行声明的代码:类CMyWizardPage1CMyWizardPage5共处于同一个源文件CMyWizardPage1.cpp。现在可以在这5个类的成员函数中使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论