提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:鲍佳佳|2021-01-26 10:31:16.483|阅读 1231 次
概述:上一讲讲了属性页对话框和相关的两个类CPropertyPage类和CPropertySheet类,对使用属性页对话框做准备。本节将为大家演示如何创建向导对话框。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
上一讲讲了属性页对话框和相关的两个类CPropertyPage类和CPropertySheet类,对使用属性页对话框做准备。本节将为大家演示如何创建向导对话框。
仍然以前面的“加法计算器”的例子为基础,在其中加入向导对话框,我们可以用它来说明加法计算器的使用方法,一步一步引导用户操作,这也是比较常见的用法。
加法计算器使用时大概可以分为三步:输入被加数、输入加数、点“计算”按钮。当功能实现了想要拥有美观的界面可以借助Toolkit Pro进行界面优化。
Xtreme Toolkit Pro:是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
下面详细说明向导对话框的创建步骤:
1.创建属性页对话框资源
根据创建对话框模板和修改对话框属性中所讲方法,在“Resource View”的Dialog”节点上点右键,然后在右键菜单中选择“Insert Dialog”创建第一个对话框模板,对话框的ID属性设置为IDD_SUMMAND_PAGE,Caption属性改为“被加数页”,Style属性在下拉列表中选择“Child”,Border属性在下拉列表中选择“Thin”。
删除“OK”和“Cancel”按钮,再按照为对话框添加控件中所讲方法,添加一个静态文本框,并修改静态文本框的Caption属性为“请先输入double型被加数”。
按照上述步骤,继续添加第二个和第三个对话框资源。第二个对话框模板的ID设为IDD_ADDEND_PAGE,Caption属性改为“加数页”,也添加一个静态文本框,Caption设为“请继续输入double型加数”,其他属性同第一个对话框。第三个对话框模板的ID设为IDD_ADD_PAGE,Caption属性改为“计算页”,添加静态文本框的Caption属性改为“最后请按下“计算”按钮”,其他属性也第一个对话框一样。
2.创建属性页类
按照创建对话框类和添加控件变量中的方法,在第一个对话框模板上点右键,在右键菜单中选择“Add Class”,弹出类向导对话框,在“Class name”编辑框中输入类名“CSummandPage”,与之前不同的是,因为属性页类都应继承于CPropertyPage类,所以要修改下面“Base class”的选项,在下拉列表中选择“CPropertyPage”。
因为是第一个属性页,所以它应该有一个“下一步”按钮,在哪里添加呢?上一讲CPropertyPage类的可重载函数中提到,OnSetActive函数用于处理属性页被切换为当前活动页的消息,所以我们可以在OnSetActive函数中进行相关设置。
那怎样重载OnSetActive函数呢?我们可以在“Class View”中找到“CSummandPage”节点,点右键弹出右键菜单,选择“Properties”,然后VS2010右侧面板上会显示对话框的属性列表,属性列表的工具栏上有个tip信息为“Overrides”的按钮,按下它,下方列表中就列出了重载函数,找到“OnSetActive”,点其右侧空白列表项出现向下箭头,再点箭头就在下面出现了“<Add>OnSetActive”的选项,选择它就会自动在CSummandPage类中添加函数OnSetActive。
我们只需在OnSetActive函数体中添加相关代码就可以实现添加“下一步”按钮的效果了。新的函数体如下:
C++代码
BOOL CSummandPage::OnSetActive() { // TODO: Add your specialized code here and/or call the base class // 获得父窗口,即属性表CPropertySheet类 CPropertySheet* psheet = (CPropertySheet*) GetParent(); // 设置属性表只有“下一步”按钮 psheet->SetWizardButtons(PSWIZB_NEXT); return CPropertyPage::OnSetActive(); }
为第二个和第三个对话框也分别添加属性页类CAddendPage和CAddPage。但第二个对话框的属性页不需要重载OnSetActive函数。第三个对话框是最后一个对话框,所以不需要“下一步”按钮,而应该换成“完成”按钮,所以也需要重载OnSetActive函数设置“完成”按钮。重载后的OnSetActive如下:
C++代码
BOOL CAddPage::OnSetActive() { // TODO: Add your specialized code here and/or call the base class // 获得父窗口,即属性表CPropertySheet类 CPropertySheet* psheet = (CPropertySheet*) GetParent(); //设置属性表只有“完成”按钮 psheet->SetFinishText(_T("完成")); return CPropertyPage::OnSetActive(); }
上面的代码段中,字符串“完成”前加了个_T,这是因为本工程创建的时候用的默认的Unicode字符集,而如果“完成”前不加_T就是ASCII字符串。_T实际上是一个宏,工程的字符集选择为Unicode时字符串就转为Unicode字符串,选择为Muli-Byte时就转为ASCII字符串。我们可以在Solution Explorer的Addition根节点上点右键,在右键菜单上选择“Properties”,弹出工程的属性对话框,Configuration Properties->General右侧列表中的Character Set就显示选择的字符集。
那点了第三个属性页上的“完成”按钮我们想进行某些处理的话,就重载OnWizardFinish函数,方法同OnSetActive函数。重载后的OnWizardFinish函数如下:
C++代码
BOOL CAddPage::OnWizardFinish() { // TODO: Add your specialized code here and/or call the base class // 提示向导完成 MessageBox(_T("使用说明向导已阅读完!")); return CPropertyPage::OnWizardFinish(); }
3.创建属性表类
属性页资源和属性页类创建完以后,还不能生成向导对话框,我们还需要一个属性表类,来容纳这些属性页。
在Solution Explorer视图中的根节点“Addition”上点右键,在右键菜单中选择Add->Class,弹出“Add Class”对话框,然后在中间区域中选择“MFC Class”,点“Add”按钮,弹出另一个类向导对话框,设置Class name为CAddSheet,Base class选择“CPropertySheet”,点“Finish”按钮,这样就属性表类就建好了。
接下来,在新生成的AddSheet.h中包含三个属性页类的头文件:
#include "SummandPage.h"
#include "AddendPage.h"
#include "AddPage.h"
之后在AddSheet.h中添加private变量:
CSummandPage m_summandPage;
CAddendPage m_addendPage;
CAddPage m_addPage;
然后在AddSheet.cpp文件中修改CAddSheet的两个构造函数为:
C++代码
CAddSheet::CAddSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { // 添加三个属性页到属性表 AddPage(&m_summandPage); AddPage(&m_addendPage); AddPage(&m_addPage); } CAddSheet::CAddSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage) { // 添加三个属性页到属性表 AddPage(&m_summandPage); AddPage(&m_addendPage); AddPage(&m_addPage); }
4.显示向导对话框
我们在加法计算器对话框上添加一个按钮,点击它就打开向导对话框。此按钮的ID设为IDC_INSTRUCT_BUTTON,Caption属性设为“使用说明”。
按照为控件添加消息处理函数中所讲方法,为IDC_INSTRUCT_BUTTON按钮在CAdditionDlg类中添加点击消息的处理函数OnBnClickedInstructButton。然后在AdditionDlg.cpp文件中包含CAddSheet的头文件:#include "AddSheet.h"。最后修改OnBnClickedInstructButton函数如下:
C++代码
void CAdditionDlg::OnBnClickedInstructButton() { // TODO: Add your control notification handler code here // 创建属性表对象 CAddSheet sheet(_T("")); // 设置属性对话框为向导对话框 sheet.SetWizardMode(); // 打开模态向导对话框 sheet.DoModal(); }
到此,向导对话框就完整的创建完成了,并可以在加法计算器对话框上点“使用说明”按钮显示出来。我们来看看效果吧:
上图只是被加数页的效果,点其上“下一步”按钮就可以继续显示后面的两个页面。
点击获取MFC开发中最全面界面控件套包Xtreme Toolkit Pro,让你专注于功能,构建卓越GUI从“这”开始!!!
更多往期内容:
本文转载自:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
在处理电子表格时,尤其是在专业和数据导向型环境中,正确设置 Excel 单元格内的数字格式至关重要。本文将介绍如何使用 Spire.XLS for Java 设置 Excel 单元格的数字格式,帮助轻松创建精美且结构清晰的电子表格。
从 Visual Paradigm 17.2 版开始,您可以创建自己的项目模板并与团队共享。这样团队成员就可以轻松创建符合团队标准的新项目。本文将指导您完成为团队创建项目模板的过程。
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现固定列,欢迎下载最新版组件体验!
专为Windows平台开发人员提供最全面的Visual C++界面开发组件
Xtreme Suite Pro为Windows开发人员提供的用于ActiveX COM的用户界面套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢