MFC中创建属性页或者向导对话框

来源:互联网 发布:网络用语fu是什么意思 编辑:程序博客网 时间:2024/05/20 09:21

要在MFC中创建属性也或者向导对话框需要涉及到两个类:CPropertyPage和CPropertySheet类。

首先需要在MFC工程中打开资源视图,在资源视图中然后在Dialog中右击插入一个对话框资源。

双击新插入的对话框资源,然后右键选择其属性,在属性对话框中将其ID以及Caption改为我们自己定义的,然后将属性中的Style改为“Child”,并且将其Border改为“Thin”。

接下来就是最关键的一步,为该对话框生成一个类,既然我们要让这个对话框成为属性页,那么我们就要将该对话框与一个属性页对象绑定在一起,那么我们就先需要为这个对话框新建一个类,单机对话框,右键选择“添加类”,然后在弹出的对话框中输入类名,但是在类名下面的框中,要选择其基类,这里因为我们是属性页,因此对话框这个类应该是继承自CPropertyPage这个类的。然后单击完成,这样我们就为这个对话框新建了一个属性页的类。

完成了上一步之后,我们有了属性页对话框,接下来这一步就是如何将我们的这个属性页显示出来,那么我们都知道,在Windows中的一些属性页,它通常都是好几个属性页同在一个对话框中的,通过按钮来切换,那么我们是如何来实现让多个对话框都在同一个属性页中的呢?对于这样的问题,就是我们接下来要建立的东西了,就是属性表单,我们可以把它当作一个用来装属性页的盒子,我们可以在它里面将我们的属性页建立起来,并且这些属性页都在同一个窗口中,我们只需要在主窗口中的相应的响应函数中建立一个属性表单,并显示它就可以了,这样属性表单中的属性页就都绑定到一个属性表单中了,显示一个属性表单就是现实所有表单中包含的属性页。好了,那么怎么建立属性表单呢?在我们的解决方案窗口中右键我们的工程名添加类,选择新建MFC类,类名可以自己定义,但是基类选择CPropertySheet类,然后确定,这样我们就建好了一个属性表单。

有了属性表单还不行,因为现在这个属性表单和我们之前建立的和对话框绑定的属性页类没有任何关系,所以接下来就是把我们之前建立的属性页对象添加到属性表单中去。那么我们就先打开我们的属性表单的类声明,然后在里面包含我们的所有想包含的属性页类的头文件,然后再为属性表单添加private成员,这些成员就是我们的属性页对象。建好了属性页对象之后,我们就需要在属性表单的构造函数中添加我们的属性页了,用到的是AddPage()函数,这个函数的参数就是属性页对象的指针。

好了,做好了这一步之后基本上我们的属性对话框就建好了,接下来就是怎么触发它打开这个属性对话框了,这里可以在主对话框的按钮来添加一个响应函数(不仅仅是这种方式,还有其他的,响应按钮是最简单的),在响应函数中建立属性表单对象,然后显示这个对象就可以了,记得要在主界面的应用程序中包含属性表单头文件:

CMySheet sheet(_T(""));

sheet.DoModal();

如果是向导的话还要在第一个属性页类中重载OnSetActive函数,最后一个属性页类中重载OnSetActivev“完成”。然后再上面的语句中的DoMOdal之前加上sheet.SetWizardMode();设置成向导模式即可。

0 0
原创粉丝点击