zoukankan      html  css  js  c++  java
  • (转载)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

    前面讲了模态对话框非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框。另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将《VC++/MFC编程入门》改为《VS2010/MFC编程入门》。

           属性页对话框的分类

           属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面。另外,我们在创建MFC工程时使用的向导对话框也属于属性页对话框,它通过点击“Next”等按钮来切换页面。

           属性页对话框就是包含一般属性页对话框和向导对话框两类。它将多个对话框集成于一身,通过标签或按钮来切换页面。

           属性页对话框相关类

          我们使用属性页对话框时,用到的类主要有两个:CPropertyPage类和CPropertySheet类。

           1.CPropertyPage类

           CPropertyPage类继承自CDialog类,它被用于处理某单个的属性页,所以要为每个属性页都创建一个继承自CPropertyPage的子类。大家可以在VS2010的MSDN中查找CPropertyPage类以及它的成员的详细说明。下面鸡啄米就为大家讲解MSDN中列出的CPropertyPage类的部分主要成员函数。

           (1)构造函数

            这里讲三个CProperty类的构造函数,函数原型为:

            CPropertyPage( );

            explicit CPropertyPage(
                    UINT nIDTemplate,
                    UINT nIDCaption = 0,
                    DWORD dwSize = sizeof(PROPSHEETPAGE)
            );

            explicit CPropertyPage(
                    LPCTSTR lpszTemplateName,
                    UINT nIDCaption = 0,
                    DWORD dwSize = sizeof(PROPSHEETPAGE)
            );

           第一个是没有任何参数的构造函数。

           第二个构造函数中,参数nIDTemplate是属性页的对话框资源ID,参数nIDCaption是属性页对话框选项卡的标题所用字符串资源的ID,若设为0,则选项卡标题就使用该属性页的对话框资源的标题。

           第三个构造函数中,参数lpszTemplateName为属性页的对话框资源的名称字符串,不能为NULL。参数nIDCaption同上。

          (2)CancelToClose()函数

           在模态属性页对话框的属性页进行了某不可恢复的操作后,使用CancelToClose()函数将“OK”按钮改为“Close”按钮,并禁用“Cancel”按钮。函数原型为:

           void CancelToClose( );

          (3)SetModified()函数

           调用此函数可激活或禁用“Apply”按钮,函数原型为:

           void SetModified(BOOL bChanged = TRUE);

          (4)可重载函数

           CPropertyPage类提供了一些消息处理函数,来响应属性页对话框的各种消息。我们重载这些消息处理函数,就可以自定义对属性页对话框操作的处理。可重载的消息处理函数包括:

           OnApply:处理属性页的“Apply”按钮被单击的消息
           OnCancel:处理属性页的“Cancel”按钮被单击的消息
           OnKillActive:处理属性页当前活动状态被切换的消息,常用于数据验证
           OnOK:处理属性页的“OK”按钮、“Apply”按钮或者“Close”按钮被单击的消息
           OnQueryCancel:处理属性页的“Cancel”按钮被单击前发出的消息
           OnReset:处理属性页的“Reset”按钮被单击的消息
           OnSetActive:处理属性页被切换为当前活动页的消息
           OnWizardBack:处理属性页的“Back”按钮被单击的消息,仅在向导对话框中有效
           OnWizardFinish:处理属性页的“Finish”按钮被单击的消息,仅在向导对话框中有效
           OnWizardNext:处理属性页的“Next”按钮被单击的消息,仅在向导对话框中有效

    VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

           2.CPropertySheet类

           CPropertySheet类继承自CWnd类,它是属性表类,负责加载、打开或删除属性页,并可以在属性页对话框中切换属性页。它跟对话框类似,也有模态和非模态两种。下面鸡啄米就讲解CPropertySheet类的部分成员函数。

          (1)构造函数

           这里依然列出CPropertySheet类的三个构造函数:

           CPropertySheet( );

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

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

           参数nIDCaption:标题的字符串资源的ID。

           参数pParentWnd:属性页对话框的父窗口,若设为NULL,则父窗口为应用程序的主窗口。

           参数iSelectPage:初始状态时,活动属性页的索引,默认为第一个添加到属性表的属性页。

           参数pszCaption:标题字符串。

          (2)GetActiveIndex()函数

           获取当前活动属性页的索引。函数原型为:

           int GetActiveIndex( ) const;

           返回值:当前活动属性页的索引。

          (3)GetActivePage()函数

           获取当前活动属性页对象。函数原型为:

           CPropertyPage* GetActivePage( ) const;

           返回值:当前活动属性页对象的指针。

          (4)GetPage()函数

           获取某个属性页对象。函数原型为:

           CPropertyPage* GetPage(int nPage) const;

           参数nPage:目标属性页的索引。

           返回值:目标属性页对象的指针。

          (5)GetPageCount()函数

           获取属性页的数量。函数原型为:

           int GetPageCount( ) const;

           返回值:属性页的数量。

          (6)GetPageIndex()函数

           获取某属性页在属性页对话框中的索引。函数原型为:

           int GetPageIndex(CPropertyPage* pPage);

           参数pPage:要获取索引的属性页对象的指针。

           返回值:属性页对象在属性页对话框中的索引。

          (7)SetActivePage()函数

           设置某个属性页为活动属性页。函数原型为:   

           BOOL SetActivePage(
                     int nPage 
           );

           BOOL SetActivePage(
                     CPropertyPage* pPage 
           );

           参数nPage:要设置为活动属性页的索引。

           参数pPage:要设置为活动属性页的对象指针。

          (8)SetWizardButtons()函数

           在向导对话框上启用或禁用Back、Next或Finish按钮,应在调用DoModal之前调用此函数。函数原型为:

           void SetWizardButtons(
                    DWORD dwFlags 
           );

           参数dwFlags:设置向导按钮的外观和功能属性。可以是以下值的组合:

           PSWIZB_BACK                    启用“Back”按钮,如果不包含此值则禁用“Back”按钮。
           PSWIZB_NEXT                    启用“Next”按钮,如果不包含此值则禁用“Next”按钮。
           PSWIZB_FINISH                  启用“Finish”按钮。
           PSWIZB_DISABLEDFINISH   显示禁用的“Finish”按钮。

          (9)SetWizardMode()函数

           设置属性页对话框为向导对话框模式,应在调用DoModal之前调用此函数。函数原型为:

           void SetWizardMode( );

          (10)SetTitle()函数

           设置属性对话框的标题。函数原型为:

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

           参数lpszText:标题字符串。

           参数nStyle:指定属性表标题的风格。应当为0或PSH_PROPTITLE。如果设为PSH_PROPTITLE,则单词“Properties”会出现在指定标题之后。例如,SetTitle("Simple",PSH_PROPTITLE)这种调用会使得属性表标题为“Simple Properties”。

          (11)AddPage()函数

           为属性对话框添加新的属性页。函数原型为:

           void AddPage(
                   CPropertyPage *pPage 
           );

           参数pPage:要添加的新的属性页的对象指针。

          (12)PressButton()函数

           模拟按下某指定的按钮。函数原型为:   

           void PressButton(
                   int nButton 
           );

           参数nButton:要模拟按下的按钮,它可以是下列值之一:

           PSBTN_BACK   选择“Back”按钮。 
           PSBTN_NEXT   选择“Next”按钮。
           PSBTN_FINISH   选择“Finish”按钮。
           PSBTN_OK   选择“OK”按钮。
           PSBTN_APPLYNOW   选择“Apply”按钮。
           PSBTN_CANCEL   选择“Cancel”按钮。
           PSBTN_HELP   选择“帮助”按钮。

          (13)RemovePage()函数

           删除某属性页。函数原型为:

           void RemovePage(
                   CPropertyPage *pPage 
           );

           void RemovePage(
                   int nPage 
           );

           参数pPage:要删除的属性页的对象指针。

           参数nPage:要删除的属性页的索引。

           属性对话框和相关的两个类鸡啄米就先介绍到这,主要是为后面使用属性页对话框做准备。有问题可以到鸡啄米博客交流。谢谢。

    原文地址:http://www.jizhuomi.com/software/164.html

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/6702724.html
Copyright © 2011-2022 走看看