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

相关文章

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图