当前位置: 代码迷 >> 综合 >> property sheet
  详细解决方案

property sheet

热度:67   发布时间:2023-12-12 00:35:53.0

6.6  属性页对话框

属性页对话框将多个对话框集中起来,通过标签或按钮 来激活各个页面。主要分为一般属性页对话框和向导对话框两类。在一般属性页对话框中,页面的切换通过单击不同的标签实现,在向导对话框中,页面的选择是通 过点击“上一页”、“下一页”、“完成”和“取消”等按钮实现的。

与属性页对话框相关的类主要包括 CPropertySheet类和CPropertyPage类。一个属性页可以包含一个CPropertySheet类(或者其派生类)的对象和多个 CPropertyPage类(或者其派生类)的对象。下面我们详细地来介绍这两个类的概念。

6.6.1  CPropertySheet类

CPropertySheet类是CWnd类的一个 派生类。CProportySheet类的对象作为属性页对话框的窗口框架出现,主要实现管理各个属性页面的作用。

虽然CPropertySheet类不是 CDialog类的派生类,但是在使用该类时却和CDialog类非常相似:首先运行CPropertySheet类的构造函数,然后调用DoModal 函数实现一个模态属性页对话框,或者调用Creat函数实现一个非模态属性页对话框,CPropertySheet类的构造函数有两个。即 CPropertySheet::Construct函数和CPropertySheet::CPropertySheet函数。在属性页对话框中进行数 据交换和在普通对话框中进行数据交换类似,只是成员变量通常作为CPropertyPage类或其派生类的成员变量。

CPropertysheet类的主要成员如下。

—  m_psh

说明:m_psh是PROPSHEETHEADER 结构类型的数据成员,主要定义属性页的框架和关于页面的信息。

—  CPropertySheet

其原型为:

CPropertySheet( );

CPropertySheet( UINT nIDCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0 );

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

说明:作为 CPropertySheet类的构造函数之一,可以指定父级窗口,选择当前页面和设置属性页的标题。

—  Construct

其原型为:

void Construct( UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0 );

void Construct( LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0 );

说明:另一个 CPropertySheet类的构造函数。当定义CPropertySheet类的对象而没有调用构造函数时,比如定义了CPropertySheet 类的对象数组时,必须显式地调用Construct构造函数。

—  GetActiveIndex

其原型为:

int GetActiveIndex( ) const;

说明:用来获得属性框中当前激活页面的索引值。可以 将返回值作为GetPage函数的参数。

—  GetPageIndex

其原型为:

int GetPageIndex( CPropertyPage* pPage ) const;

说明:用来获得指定属性页的索引。

—  GetPageCount

其原型为:

int GetPageCount( );

说明:用来获得属性页对话框中当前属性页的个数,不 包括已经定义了但是没有调用AddPage函数的属性页。

—  GetPage

其原型为:

CPropertyPage* GetPage( int nPage ) const;

说明:用来返回指定索引的属性页的指针。

—  GetActivePage

其原型为:

CPropertyPage* GetActivePage( ) const;

说明:用来返回当前激活的属性页的指针。

—  SetActivePage

其原型为:

BOOL SetActivePage( int nPage );

BOOL SetActivePage( CPropertyPage* pPage );

说明:用来将指定索引号或指针的属性页设置为激活 页。

—  SetTitle

其原型为:

void SetTitle( LPCTSTR lpszText, UINT nStyle = 0 );

说明:用来将设置属性页对话框的标题。

—  GetTabControl

其原型为:

CTabCtrl* GetTabControl( );

说明:返回一个指向CTabCtrl类的指针。比如 在初始化过程中想往标签中增加位图时就需要调用GetTabControl函数。

—  SetFinishText

其原型为:

void SetFinishText( LPCTSTR lpszText );

说明:在向导对话框中,当完成了所有操作时,在“完 成”(Finish)按钮上设置需要显示的文字,同时隐藏“上一页”( Back)按钮和“下一页”( Next)按钮。

—  SetWizardButtons

其原型为:

void SetWizardButtons( DWORD dwFlags );

说明:在向导对话框中设置按钮的显示方式.必须在调 用DoModal函数之后才可以调用SetWizardButtons函数。在属性页中可以通过调用 CPropertyPage::OnSetActive函数来判断。

—  SetWizardMode

其原型为:

void SetWizardMode( );

说明:设置属性页对话框为向导对话框模式。应该在调 用DoModal函数之前调用SetWizardMode函数。

—  DoModal

其原型为:

virtual int DoModal( );

说明:显示一个模态属性页。对于一般属性页,返回值 为IDOKIDCANCEL或者0;对于向导对话框返回值为ID_WIZFINISH或IDCANCEL。

—  Create

其原型为:

BOOL Create( CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)–1, DWORD dwExStyle = 0 );

说明:显示一个非模态属性页。

—  AddPage

其原型为:

void AddPage( CPropertyPage *pPage );

说明:往属性框中增加属性页。按照调用 AddPage函数的顺序从左至右地显示属性页。在调用AddPage函数后,实际上并没有为该页创建相应的窗口,只有当属性页被激活时才为该属性页创建 窗口。

在调试程序的时候,如果属性页对话框可以正常地显示 并不说明所有属性页都正常,应该逐次激活每一个属性页并测试效果。当某个属性页被选中时出现问题,往往是在该属性页的初始化过程中导致的。

—  RemovePage

其原型为:

void RemovePage( CPropertyPage *pPage );

void RemovePage( int nPage );

说明:从属性框中去除一个属性页。去除一个属性页的 同时删除与之关联的窗口,但是CPropertyPage类的对象还存在。只有在属性框窗口被关闭后,CProperty

  相关解决方案