MFC 向导对话框的设置与显示

2024-04-22 07:38

本文主要是介绍MFC 向导对话框的设置与显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.设置Dialog           (基础的设置)

2.创建属性页类,并重写相关函数

   选定一个Dialog,然后添加class,名字CStep1,由于属性页对话框类继承于CPropertyPage类,所以基类选择处选择CPropertyPage。

   创建完该类之后就是重写其中的相关函数。

   CPropertyPage类提供了一些消息处理函数,来响应属性页对话框的各种消息。我们重载这些消息处理函数,就可以自定义对属性页对话框操作的处理。可重载的消息处理函

   数包括:

       OnApply:处理属性页的“Apply”按钮被单击的消息

       OnCancel:处理属性页的“Cancel”按钮被单击的消息

       OnKillActive:处理属性页当前活动状态被切换的消息,常用于数据验证

       OnOK:处理属性页的“OK”按钮、“Apply”按钮或者“Close”按钮被单击的消息

       OnQueryCancel:处理属性页的“Cancel”按钮被单击前发出的消息

       OnReset:处理属性页的“Reset”按钮被单击的消息

       OnSetActive:处理属性页被切换为当前活动页的消息

       OnWizardBack:处理属性页的“Back”按钮被单击的消息,仅在向导对话框中有效

       OnWizardFinish:处理属性页的“Finish”按钮被单击的消息,仅在向导对话框中有效

       OnWizardNext:处理属性页的“Next”按钮被单击的消息,仅在向导对话框中有效

BOOL CStep1::OnSetActive()
{// TODO: 在此添加专用代码和/或调用基类CPropertySheet* psheet = (CPropertySheet*)GetParent()<span class="comment">// 获得父窗口,即属性表CPropertySheet类 </span><span> </span><span> </span>psheet->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);//添加向导按钮“上一页”和“下一页”return CPropertyPage::OnSetActive();
}
BOOL CStep3::OnWizardFinish()//当点击finish按钮时,弹出消息框
{// TODO: 在此添加专用代码和/或调用基类MessageBox(_T("计算器向导您已经阅读完毕"));//弹出消息框return CPropertyPage::OnWizardFinish();
}

3.创建属性表类

在解决方案资源管理器的root下,右击->添加->类,然后选择MFC类,然后添加名称CMySheet,其基类为CPropertySheet。

这时候会自动生成MySheet.h和MySheet.cpp。我们先打开.h文件然后在里面添加属性页对话框类的头文件,例如之前创建的Step0.h,Step1.h......,添加完之后,找到MySheet类,在里面添加私有成员,私有成员是所有的属性页类的一些变量。
#pragma once
#include "Step0.h"
#include "Step1.h"
#include "Step2.h"
#include "Step3.h"// CMySheetclass CMySheet : public CPropertySheet
{DECLARE_DYNAMIC(CMySheet)public:CMySheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);CMySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);virtual ~CMySheet();protected:DECLARE_MESSAGE_MAP()
private:CStep0 m_step0;CStep1 m_step1;CStep2 m_step2;CStep3 m_step3;
};
之后需要在CMySheet的构造函数中创建属性页使用到AddPage()函数
为属性对话框添加新的属性页。函数原型为:

       void AddPage(
               CPropertyPage *pPage 
       );

其两个构造函数都要修改:( 注意这里面添加属性页的顺序是向导框显示的顺序,一定要注意顺序安排
CMySheet::CMySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage):CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{AddPage(&m_step0);AddPage(&m_step1);AddPage(&m_step2);AddPage(&m_step3);
}CMySheet::CMySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage):CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{AddPage(&m_step0);AddPage(&m_step1);AddPage(&m_step2);AddPage(&m_step3);
}

4.最后设置“启动”Button

void CMFCApplication1Dlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CMySheet sheet(_T(""));//声明一个CMySheet类的变量,并且初始化。sheet.SetWizardMode();//设置属性页对话框为向导对话框模式,应该在调用DoModal之前调用此函数sheet.DoModal();//用于显示模态对话框
}



以上是简单的设置。


这篇关于MFC 向导对话框的设置与显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925177

相关文章

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题