VC的属性表编程

     许多程序员都欣赏WINDOWS提供的属性表,属性表是包含控件页的标签式对话框,用户通过单击鼠标在其间切换。本文将简单介绍一下属性标的编程实现。

    属性表的功能都合理的封装在一对MFC类———CPropertySheet和CPropertyPage中。

CPropertySheet代表属性表本身,是从CWnd派生出来的。

CPropertyPage代表属性表的页,是从CDialog派生出来的。

和对话框一样,属性表可以是有模式和无模式的。

CPropertySheet::DoModal创建有模式属性表,

而CPropertySheet:::Create创建无模式属性表。

创建属性表的步骤如下:

1.针对属性表的每一页创建一个对话框模板,定义页的内容和特性,将对话框标题设置成您希望在属性表页上方标签中显示的标题。

2.针对属性表的每一页由CPropertyPage派生出一个类似对话框的类。

3.由CPropertySheet派生出一个属性表类。将属性表类和第2步中得到的属性表页类实例化。利用CPropertySheet::AddPage将各页按预期的顺序添加到属性表中。

4.调用属性表的DoModal函数将属性表显示在屏幕上。

下面举一个实例,简单的描述一下构建一个属性表的过程。

首先用VC生成一个基于单文档的工程,其名为SheetTest

在资源中插入两个对话框Dialog1和Diaog2.

用ClassWizad基于两个对话框分别生成两个新类CFirstPage、CSecondPage。

注意,在设定基类时选择CPropertyPage,生成代码如下:

class CFirstPage : public CPropertyPage

 {

public:  

        CFirstPage();

       ~CFirstPage();

        protected:  virtual void DoDataExchange(CDataExchange* pDX);   

       // DDX/DDV support

};

class CSecondPage : public CPropertyPage

{

public:  

       CSecondPage();

      ~CSecondPage();

       protected:  virtual void DoDataExchange(CDataExchange* pDX);   

       // DDX/DDV support

};

用ClassWizad分别生成新类CMyPropertySheet,从CPropertySheet派生。

在类中添加上面定义的两个类的对象。并在类的构造函数中,将两个对象加载到属性表中,代码如下:

class CMyPropertySheet: public CPropertySheet

{

public:  

        CMyPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);                           CMyPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0)

         {

                   AddPage(&m_FirstPage);  AddPage(&m_SecondPage);

          }

          virtual ~CMyPropertySheet();

          public:  

                  CFirstPage m_FirstPage;  

                  CSecondPage m_SecondPage;  

};

在需要显示属性表的地方加入如下的代码,就可以显示出属性表。

 CMyPropertySheet dlg(_T("MyPropertyTest"));  

dlg.DoModal();

大功告成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值