MFC 属性表单的创建

开发环境:VS2019

我们创建以下效果的一个窗体。

 

有三个页面分别对应了不同的窗口,

这个窗口是一个继承了CMFCPropertySheet类的对象窗口,其原理,就是我们分别添加三个不同的属性表页,然后将这三个属性表页,添加到我们这个CMFCPropertySheet类的对象里面。

现在我们来实现三个属性表页的创建。

首先创建资源,点到资源管理器找到dialog然后选择添加资源,这里我们展开Dialog资源列表,找到LAREG选项,我们使用这个来创建我们的属性表页。

创建完后添加一些控件,如下图所示:

 

 按照此步骤分别创建三个这样的属性表页。

上面我们也说到,效果的实现就是将这三个聚合起来,然后显示出来。

我们为每一个页面创建一个类,继承于CMFCPropertyPage。

如下图所示:

IDD_PROP1就是我们整个属性页表的ID

我们这里添加了IDD枚举变量,以方便与页面连接。我们在构造函数里面连接我们创建的属性表页

 

 分别对其他的属性表页执行相同的操作。

做完以上步骤之后,我们就开始将三个页面聚合起来,

我们新建一个类,继承于CMFCPropertySheet,并将三个页面添加到类里面,

 

 然后我们在构造函数里面添加这三个页面

 

 这样我们就把这三个页面集合到一个窗口下了,下面我们来显示这个窗口,我们在菜单栏添加一个菜单用来显示这个窗口,名字就叫“属性表单”

 

 然后添加事件处理函数:

 

 这样就显示了一个模态对话框,使用方法于CDialog相同,也可以使用Create创建非模态的对话框,

如果我们调用propSheet.SetWizardMode(); 函数那么属性表单将会变成向导模式

注意头文件的引用,VC6.0没有这个类,不适用VC6.0

类似于下面效果,出现上一步和下一步

 

 默认的时候每个页面都有上一步和下一步,这样不合理的,第一页不应该有上一步,最后一页也不应该有下一步,然后我们完善一下。

由于该按钮是内部实现的,所以我们需要调用虚函数来实现对按钮的修改,CProertySheet类提供了修改按钮的方法(他们之间是友元类,相互调用)SetWizardButtons(UINT),这个函数用来设置显示的按钮

分别重写表单页的虚函数OnSetActive(),这个虚函数在当当前页变为活动页时就执行该函数。所以我们在该函数下面实现我们的按钮修改操作,因为按钮是父类构建的,所以我们获取父类的指针,由于指针是CWnd*类型的,所以我们要强制转换成(CPropertySheet*)类型的指针

 

 

 

 这样我们就设置了第一个页面只具有一个下一步按钮和取消按钮,上一步是禁用的。按照此步骤分别设置其他的两个页面。

   

 

posted @ 2020-11-20 19:28  大笨瓜  阅读(587)  评论(0)    收藏  举报