1. 程式人生 > >VS2013/MFC程式設計入門之十二(對話方塊:屬性頁對話方塊及相關類的介紹)

VS2013/MFC程式設計入門之十二(對話方塊:屬性頁對話方塊及相關類的介紹)

本節開始講一種特殊的對話方塊--屬性頁對話方塊。

       屬性頁對話方塊的分類

       屬性頁對話方塊想必大家並不陌生,XP系統中桌面右鍵點屬性,彈出的就是屬性頁對話方塊,它通過標籤切換各個頁面。另外,我們在建立MFC工程時使用的嚮導對話方塊也屬於屬性頁對話方塊,它通過點選“下一步”等按鈕來切換頁面。

       屬性頁對話方塊就是包含一般屬性頁對話方塊和嚮導對話方塊兩類。它將多個對話方塊集成於一身,通過標籤或按鈕來切換頁面。

       屬性頁對話方塊相關類

我們使用屬性頁對話方塊時,用到的類主要有兩個:CPropertyPage類和CPropertySheet類。

       1.CPropertyPage類

       CPropertyPage類繼承自CDialog類,它被用於處理某單個的屬性頁,所以要為每個屬性頁都建立一個繼承自CPropertyPage的子類。大家可以在VS2013的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()函式將“確定”按鈕改為“關閉”按鈕,並禁用“取消”按鈕。函式原型為:

       void CancelToClose( );

      (3)SetModified()函式

       呼叫此函式可啟用或禁用“應用”按鈕,函式原型為:

       void SetModified(BOOL bChanged = TRUE);

      (4)可過載函式

       CPropertyPage類提供了一些訊息處理函式,來響應屬性頁對話方塊的各種訊息。我們過載這些訊息處理函式,就可以自定義對屬性頁對話方塊操作的處理。可過載的訊息處理函式包括:

       OnApply:處理屬性頁的“應用”按鈕被單擊的訊息
       OnCancel:處理屬性頁的“取消”按鈕被單擊的訊息
       OnKillActive:處理屬性頁當前活動狀態被切換的訊息,常用於資料驗證
       OnOK:處理屬性頁的“確定”按鈕、“應用”按鈕或者“關閉”按鈕被單擊的訊息
       OnQueryCancel:處理屬性頁的“取消”按鈕被單擊前發出的訊息
       OnReset:處理屬性頁的“Reset”按鈕被單擊的訊息
       OnSetActive:處理屬性頁被切換為當前活動頁的訊息
       OnWizardBack:處理屬性頁的“返回”按鈕被單擊的訊息,僅在嚮導對話方塊中有效
       OnWizardFinish:處理屬性頁的“完成”按鈕被單擊的訊息,僅在嚮導對話方塊中有效
       OnWizardNext:處理屬性頁的“下一步”按鈕被單擊的訊息,僅在嚮導對話方塊中有效

       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   選擇“返回”按鈕。 
       PSBTN_NEXT   選擇“下一步”按鈕。
       PSBTN_FINISH   選擇“完成”按鈕。
       PSBTN_OK   選擇“確定”按鈕。
       PSBTN_APPLYNOW   選擇“應用”按鈕。
       PSBTN_CANCEL   選擇“取消”按鈕。
       PSBTN_HELP   選擇“幫助”按鈕。

      (13)RemovePage()函式

       刪除某屬性頁。函式原型為:

       void RemovePage(
               CPropertyPage *pPage 
       );

       void RemovePage(
               int nPage 
       );

       引數pPage:要刪除的屬性頁的物件指標。

       引數nPage:要刪除的屬性頁的索引。

       屬性對話方塊和相關的兩個類就先介紹到這,主要是為後面使用屬性頁對話方塊做準備。有問題可以到部落格交流。謝謝。

相關推薦

VS2013/MFC程式設計入門對話方塊屬性對話方塊相關介紹

本節開始講一種特殊的對話方塊--屬性頁對話方塊。        屬性頁對話方塊的分類        屬性頁對話方塊想必大家並不陌生,XP系統中桌面右鍵點屬性,彈出的就是屬性頁對話方塊,它通過標籤切換各個頁面。另外,我們在建立MFC工程時使用的嚮導對話方塊也屬於屬性頁對

VS2013/MFC程式設計入門常用控制元件靜態文字框

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。        控制元件的通知訊息

VS2013/MFC程式設計入門對話方塊檔案對話方塊

上一講介紹的是訊息對話方塊,本節講解檔案對話方塊。        檔案對話方塊的分類 檔案對話方塊分為開啟檔案對話方塊和儲存檔案對話方塊,相信大家在Windows系統中經常見到這兩種檔案對話方塊。例如,很多編輯軟體像記事本等都有“開啟”選項,選擇“開啟”後會彈出一個對

VS2013/MFC程式設計入門對話方塊訊息對話方塊

       本節講解Windows系統中最常用最簡單的一類對話方塊--訊息對話方塊。        我們在使用Windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以MFC提供了兩個函式可以直接生成指

VS2013/MFC程式設計入門對話方塊非模態對話方塊的建立顯示

 上一節講了模態對話方塊及其彈出過程,本節接著講另一種對話方塊--非模態對話方塊的建立及顯示。        前面已經說過,非模態對話方塊顯示後,程式其他視窗仍能正常執行,可以響應使用者輸入,還可以相互切換。本文中將上一講中建立的Tip模態對話方塊改為非模態對話方塊,讓

VS2013/MFC程式設計入門常用控制元件圖片控制元件Picture Control

本節主要講一種簡單實用的控制元件,圖片控制元件Picture Control。通過使用圖片控制元件我們可以在介面某個位置顯示圖片以美化介面。        圖片控制元件簡介        圖片控制元件和前面講到的靜態文字框都是靜態文字控制元件,因此兩者的使用方法有很多

VS2013/MFC程式設計入門選單VS2013選單資源詳解

前面我們已經講完了所有的常用控制元件,本節開始為大家講解選單的概念及使用。        選單簡介        選單可以分為下拉式選單和彈出式選單。        下拉式選單一般在視窗標題欄下面顯示,大家還記得我們在VS2013/MFC程式設計入門之一(利用MFC

VS2013/MFC程式設計入門常用控制元件列表檢視控制元件List Control 上

      本節為大家詳解列表檢視控制元件List Control的使用。      列表檢視控制元件簡介        列表檢視控制元件List Control同樣比較常見,它能夠把任何字串內容以列表的方式顯示出來,這種顯示方式的特點是整潔、直觀,在實際應用中能為使

VS2013/MFC程式設計入門常用控制元件組合框控制元件Combo Box

 上一節講了列表框控制元件ListBox的使用,本節主要講解組合框控制元件Combo Box。組合框同樣相當常見,例如,在Windows系統的控制面板上設定語言或位置時,有很多選項,用來進行選擇的控制元件就是組合框控制元件。        組合框控制元件簡介     

VS2013/MFC程式設計入門常用控制元件標籤控制元件Tab Control

前面兩節講了樹形控制元件Tree Control,本節開始講解標籤控制元件Tab Control,也可以稱為選項卡控制元件。        標籤控制元件簡介        標籤控制元件也比較常見。它可以把多個頁面整合到一個視窗中,每個頁面對應一個標籤,使用者點選某個標

VS2013/MFC程式設計入門十三常用控制元件列表框控制元件ListBox

前面兩節講了比較常用的按鈕控制元件,並通過按鈕控制元件例項說明了具體用法。本文要講的是列表框控制元件(ListBox)及其使用例項。        列表框控制元件簡介        列表框給出了一個選項清單,允許使用者從中進行單項或多項選擇,被選中的項會高亮顯示。列表

VS2013/MFC程式設計入門對話方塊對話方塊新增控制元件

建立對話方塊資源需要建立對話方塊模板、修改對話方塊屬性、為對話方塊新增各種控制元件等步驟,前面一講中已經講了建立對話方塊模板和修改對話方塊屬性,本節繼續講如何為對話方塊新增控制元件。        上一講中建立了一個名為“Addition”的工程,目的是生成一個實現加法

VS2013/MFC程式設計入門對話方塊建立對話方塊和新增控制元件變數

前兩講中為大家講解了如何建立對話方塊資源。建立好對話方塊資源後要做的就是生成對話方塊類了。再宣告下,生成對話方塊類主要包括新建對話方塊類、新增控制元件變數和控制元件的訊息處理函式等。        因為給大家的例程Addition是基於對話方塊的程式,所以程式自動建立了

VS2013/MFC程式設計入門MFC應用程式框架分析

  上一講講的是VS2013應用程式工程中檔案的組成結構。這一節就為大家分析下MFC應用程式框架的執行流程。        一.SDK應用程式與MFC應用程式執行過程的對比        程式執行都要有入口函式,在之前的C++教程中都是main函式,而Windows應

VS2010/MFC程式設計入門四十三MFC常用CTime和CTimeSpan

轉載:   http://www.jizhuomi.com/software/230.html 上一節中雞啄米講了MFC常用類CString類的用法,本節繼續講另外兩個MFC常用類-日期和時間類CTime類和CTimeSpan類。    

VS2010-MFC對話屬性對話相關介紹

name sbt simple 兩個 點擊 pct dialog hang pos 轉自:http://www.jizhuomi.com/software/164.html 一 屬性頁對話框的分類 屬性頁對話框想必大家並不陌生,XP系統

Spark 入門再看Spark中的排程策略Standlone

資源排程是Spark中比較重要的內容,對排程的相關原理以及策略的瞭解對叢集的執行以及優化都會有很大的幫助,資源排程的方式有多種,Local,Standlone,Yarn,Mesos等,本文只針對Standlone的方式做簡介 幾個重要的概念 開始文章之前

Activiti工作流--組任務角色的設定--完結

將任務分配給某個角色 在流程設計當中指定處理任務的某個角色 (注意:新增處理人員不是在assignee選項 而是 cadidate group) 在流程設計的時候用流程變數的方式指定某個角色作為處理人,然後在前面的流程處理完的時候用流程變數指定某些角色的人傳

Java併發程式設計系列死鎖、飢餓和活鎖

死鎖發生在一個執行緒需要獲取多個資源的時候,這時由於兩個執行緒互相等待對方的資源而被阻塞,死鎖是最常見的活躍性問題。這裡先分析死鎖的情形: 假設當前情況是執行緒A已經獲取資源R1,執行緒B已經獲取資源R2,之後執行緒A嘗試獲取資源R2,這個時候因為資源R2已經

Java併發程式設計系列 死鎖 飢餓和活鎖

                        死鎖發生在一個執