VC下一步
来源:互联网 发布:mac下hadoop2.7.3安装 编辑:程序博客网 时间:2024/04/29 16:27
1. 类CPropertyPage 是从CDiaglog中派生出来的,具有Diaglog的基本性质,需要注意的是它的样式必须是Child。
2. 类CPropertySheet 是一个属性表,也是一个窗体,相当一个容器,用来存放所有的CpropertyPage。它不是 从CDialog 派生出来的,但是它可以象普通对话框类似的操作, 如DoModal(),当用 DoModal()显示 后,它就包含了“取消”、“上一步”、“下一步” 等基本按钮。
下面给出一个实例
① 新建一个 VC++ MFC AppWizard 工程,命名为TraditionalWizard,并选择Dialog Based 样式。
② 在自动生成 的Dialog 资源中加入一个按钮IDC_BENGINWIZ 用来启动向导。
③ 创建 CPropertyPage。新建Dialog 资源,命名为IDD_STEP1,注意一定要将新建对话框的Style属性设置成Child 和边界属性设置为Thin,并且不要生成一个新类。
用ClassWizard 生成一个新类,命名为CStep1,基类为CPropertyPage,且将Dialog ID 设置为刚生成的资源IDD_STEP1。这样就生成了一个新属性页Step1。如此操作就可以 同样生成Step2、Step3 属性页。为了方便显示,在每个对话框都放置了一个控件,用来表示当前是哪一步。
④ 创建 CPropertySheet。新建一个类,命名为CWizard,基类为CPropertySheet。并将属性页和属性表关联起来。代码为
//将代码放在按钮IDC_BEGINWIZ的Click事件中
CWizard MyWizard(_T( "我的向导 "),this,1); //生成一个属性表
CStep1 MyStep1; //属性页1
CStep2 MyStep2; //属性页2
CStep3 MyStep3; //属性页3
MyWizard.AddPage(&MyStep1); //添加属性页1
MyWizard.AddPage(&MyStep2); //添加属性页2
MyWizard.AddPage(&MyStep3); //添加属性页3
MyWizard.SetWizardMode(); //将属性表设置成向导样式
MyWizard.SetActivePage(&MyStep1); //设置第一页为第一步
MyWizard.DoModal(); //显示属性表
⑤协调显示。在每一页为当前页时,都会触发OnSetActive事件,故对每一个属性页都要重载该函数,在CStep1类上选择Add Virtual Function ...。因为显示第一页时,不存在“上一步”,故在CStep1的 OnSetActive函数中需要添加如下代码: //代码放在OnSetActive函数中
CPropertySheet* pParent=(CPropertySheet*)GetParent(); // 获得属性表的指针
pParent-> SetWizardButtons(PSWIZB_NEXT); // 设置属性表的显示按钮只为下一步
SetDlgItemText(IDC_TEXT1, "这是向导的第一步 ");
同样在显示中间页时应该设置成即有“上一步”,也有“下一步”,代码为: CPropertySheet* pParent=(CPropertySheet*)GetParent();
pParent-> SetWizardButtons(PSWIZB_NEXT|PSWIZB_BACK);
SetDlgItemText(IDC_TEXT2, "这是向导的第二步 ");
最后在显示最后一页时只显示“完成”和“上一步”,代码为: CPropertySheet* pParent=(CPropertySheet*)GetParent();
pParent-> SetWizardButtons(PSWIZB_FINISH|PSWIZB_BACK);
SetDlgItemText(IDC_TEXT3, "这是向导的第三步 ");
2. 类CPropertySheet 是一个属性表,也是一个窗体,相当一个容器,用来存放所有的CpropertyPage。它不是 从CDialog 派生出来的,但是它可以象普通对话框类似的操作, 如DoModal(),当用 DoModal()显示 后,它就包含了“取消”、“上一步”、“下一步” 等基本按钮。
下面给出一个实例
① 新建一个 VC++ MFC AppWizard 工程,命名为TraditionalWizard,并选择Dialog Based 样式。
② 在自动生成 的Dialog 资源中加入一个按钮IDC_BENGINWIZ 用来启动向导。
③ 创建 CPropertyPage。新建Dialog 资源,命名为IDD_STEP1,注意一定要将新建对话框的Style属性设置成Child 和边界属性设置为Thin,并且不要生成一个新类。
用ClassWizard 生成一个新类,命名为CStep1,基类为CPropertyPage,且将Dialog ID 设置为刚生成的资源IDD_STEP1。这样就生成了一个新属性页Step1。如此操作就可以 同样生成Step2、Step3 属性页。为了方便显示,在每个对话框都放置了一个控件,用来表示当前是哪一步。
④ 创建 CPropertySheet。新建一个类,命名为CWizard,基类为CPropertySheet。并将属性页和属性表关联起来。代码为
//将代码放在按钮IDC_BEGINWIZ的Click事件中
CWizard MyWizard(_T( "我的向导 "),this,1); //生成一个属性表
CStep1 MyStep1; //属性页1
CStep2 MyStep2; //属性页2
CStep3 MyStep3; //属性页3
MyWizard.AddPage(&MyStep1); //添加属性页1
MyWizard.AddPage(&MyStep2); //添加属性页2
MyWizard.AddPage(&MyStep3); //添加属性页3
MyWizard.SetWizardMode(); //将属性表设置成向导样式
MyWizard.SetActivePage(&MyStep1); //设置第一页为第一步
MyWizard.DoModal(); //显示属性表
⑤协调显示。在每一页为当前页时,都会触发OnSetActive事件,故对每一个属性页都要重载该函数,在CStep1类上选择Add Virtual Function ...。因为显示第一页时,不存在“上一步”,故在CStep1的 OnSetActive函数中需要添加如下代码: //代码放在OnSetActive函数中
CPropertySheet* pParent=(CPropertySheet*)GetParent(); // 获得属性表的指针
pParent-> SetWizardButtons(PSWIZB_NEXT); // 设置属性表的显示按钮只为下一步
SetDlgItemText(IDC_TEXT1, "这是向导的第一步 ");
同样在显示中间页时应该设置成即有“上一步”,也有“下一步”,代码为: CPropertySheet* pParent=(CPropertySheet*)GetParent();
pParent-> SetWizardButtons(PSWIZB_NEXT|PSWIZB_BACK);
SetDlgItemText(IDC_TEXT2, "这是向导的第二步 ");
最后在显示最后一页时只显示“完成”和“上一步”,代码为: CPropertySheet* pParent=(CPropertySheet*)GetParent();
pParent-> SetWizardButtons(PSWIZB_FINISH|PSWIZB_BACK);
SetDlgItemText(IDC_TEXT3, "这是向导的第三步 ");
- VC下一步
- 下一步
- 下一步
- 下一步
- 下一步
- 下一步计划
- 下一步学习计划
- 下一步计划
- 下一步行动
- 下一步打算
- eworkflow下一步的计划
- 下一步职业规划发展
- 中国经济下一步何去何从?
- 进入下一步设
- 下一步该怎么走?
- 下一步怎么走?
- PMON的下一步
- 戴尔的下一步
- 细说数据库范式
- dataGridView常见用法
- 黑马程序员_基础学习笔记(7)
- linux测试程序
- C#中对Excel的操作
- VC下一步
- 从边际效用递减原理看人的幸福感和前进动力
- jsp案例分析(一)-在线投票系统-1-部署安装调试
- 一个10年程序员给大家的忠告
- Posix线程编程指南(5)
- Oracle多表查询
- 投影
- 谈谈编程语言(四)——编程语言和方法,入门的选择
- 在Jenkins中实现“云构建”