【09】MFC入門到精通——MFC 屬性頁對話框的 CPropertyPage類 和 CPropertySheet 類

文章目錄

  • 九、屬性頁對話框的類`CPropertyPage`類 和 `CPropertySheet` 類。
    • 9.1 CPropertyPage 類
      • (1)構造函數
      • (2)CancelToClose()函數
      • (3)SetModified()函數
      • (4)可重載函數
    • 9.2 CPropertySheet類
      • (1)構造函數
      • (2)GetActiveIndex()函數
      • (3)GetActivePage()函數
      • (4)GetPage()函數
      • (5)GetPageCount()函數
      • (6)GetPageIndex()函數
      • (7)SetActivePage()函數
      • (8)SetWizardButtons()函數
      • (9)SetWizardMode()函數
      • (10)SetTitle()函數
      • (11)AddPage()函數
      • (12)PressButton()函數
      • (13)RemovePage()函數

九、屬性頁對話框的類CPropertyPage類 和 CPropertySheet 類。

屬性頁對話框的分類

屬性頁對話框想必大家并不陌生,XP系統中桌面右鍵點屬性,彈出的就是屬性頁對話框,它通過標簽切換各個頁面。另外,我們在創建MFC工程時使用的向導對話框也屬于屬性頁對話框,它通過點擊“Next”等按鈕來切換頁面。

屬性頁對話框就是包含一般屬性頁對話框向導對話框兩類。它將多個對話框集成于一身,通過標簽或按鈕來切換頁面。

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

CMFCPropertySheet和CMFCPropertyPage都是vs08sp1以后引入的新類,擴充了已有的CPropertySheet和CPropertyPage這兩個類。

9.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”按鈕被單擊的消息,僅在向導對話框中有效

9.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.pswp.cn/web/89565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89565.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習筆記4

時間:2025.7.18學習內容&#xff1a;【語法基礎】if判斷、比較運算符與邏輯運算符一、if判斷if判斷基本格式&#xff1a;if要判斷的條件&#xff0c;條件成立時要做的事情注意&#xff1a;input內默認存儲的是字符串age17 if age<18:print(未成年不能上網) scoreinput(你的成…

20250718-2-Kubernetes 應用程序生命周期管理-Pod對象:基本概念(豌豆莢)_筆記

二、Kubernetes應用程序生命周期管理&#xfeff;1. 課程內容概述主要內容&#xff1a;Pod資源共享實現機制管理命令應用自修復&#xff08;重啟策略健康檢查&#xff09;環境變量Init container靜態Pod2. Pod對象介紹&#xfeff;1&#xff09;Pod基本概念&#xfeff;&#x…

為Notepad++插上JSON格式化的翅膀

文章目錄概要安裝步驟效果展示概要 JSMinNPP.dll 是一個 Notepad 插件&#xff0c;用于壓縮 JavaScript 代碼和格式化JSON字符床。以下是安裝和使用的詳細步驟&#xff1a; 安裝步驟 下載 JSMinNPP.dll 插件 https://pan.quark.cn/s/73dd0ac225be 放置 DLL 文件 打開 Notepa…

STM32-第七節-TIM定時器-3(輸入捕獲)

一、簡介&#xff1a;1.名稱&#xff1a;IC&#xff0c;輸入捕獲2.電路&#xff1a;如圖為通用定時器框圖&#xff0c;下半部分的左半模塊&#xff0c;與輸出比較部分共用捕獲/比較寄存器與引腳。3.功能&#xff1a;當通道輸入引腳出現電平跳變時&#xff0c;當前CNT的值&#…

Console 納管 Elasticsearch 9(二):日志監控

前面介紹過 INFINI Console 納管 Elasticsearch 9&#xff08;一&#xff09;&#xff0c;進行指標監控、數據管理、DSL 語句執行&#xff0c;但日志監控功能需要結合 Agent 才能使用。現在來實現一下&#xff1a; Agent 需要和 ES 部署到同一機器上&#xff0c;這里是在我本地…

實訓十——路由器與TCP/IP模型

補充拓撲圖&#xff08;交換機串聯通信&#xff09;電腦A——交換機S1——交換機S2——電腦B問&#xff1a;A和B如何通信&#xff1f;首先A會將通信的數據封裝好&#xff0c;將源端口、目標端口&#xff0c;源地址、目標地址&#xff0c;源MAC、目標MAC封裝起來&#xff0c;但是…

【Android】ViewBinding(視圖綁定)

一、什么是ViewBindingViewBinding是Android Studio 3.6推出的新特性&#xff0c;旨在替代findViewById(內部實現還是使用findViewById)。通過ViewBinding&#xff0c;可以更輕松地編寫可與視圖交互的代碼。在模塊中啟用ViewBinding之后&#xff0c;系統會為該模塊中的每個 XML…

泛型與類型安全深度解析及響應式API實戰

一、泛型通配符&#xff1a;靈活與安全的平衡術 在Java動物收容所系統中&#xff0c;我們常需要處理不同動物類型的集合。通過泛型通配符&#xff0c;可以構建更靈活的API&#xff1a; class Shelter<T extends Animal> {private List<T> animals new ArrayList&l…

Cookie 與 Session概述

在 Web 開發中&#xff0c;會話跟蹤是一個核心問題。HTTP 協議是無狀態的&#xff0c;這意味著服務器無法直接記住客戶端的狀態。而 Cookie 和 Session 技術的出現&#xff0c;正是為了解決這一難題。一、Cookie概述Cookie&#xff0c;翻譯成中文是小甜點、小餅干的意思。在 HT…

阿里云alicloud liunux3-安裝docker

你這個錯誤&#xff1a;Curl error (35): SSL connect error for https://download.docker.com/linux/centos/8/x86_64/stable/... Error: Failed to download metadata for repo docker-ce-stable: Yum repo downloading error說明你的機器訪問 download.docker.com 的 HTTPS …

【世紀龍科技】汽車故障診斷與排除仿真教學軟件

在汽車產業智能化、電動化轉型加速的今天&#xff0c;汽車維修行業對技術人才的要求已從傳統經驗型向“理論實踐數字化”復合型轉變。然而&#xff0c;實車實訓成本高、安全隱患大、教學場景受限等問題&#xff0c;始終制約著職業教育的高質量發展。江蘇世紀龍科技有限公司立足…

柴油機活塞cad【4張】三維圖+設計說明書

1015柴油機活塞結構設計及溫度場分析 摘 要 隨著科研的進步&#xff0c;內燃機技術得到了快速的發展&#xff0c;低排放高效率的內燃機的發展成為內燃機發展的主要趨勢&#xff0c;活塞作為內燃機的主要組成部件&#xff0c;在內燃機中扮演著至關重要的作用。活塞在內燃機中始終…

雪豹大模型驅動效率革命 華鼎冷鏈科技重構餐飲供應鏈神經網絡

當餐飲行業的開店率高達67.5%、閉店率達61.2%時&#xff0c;供應鏈該如何進行革新與升級&#xff1f; 在鄭州盛大啟幕的第三屆中國火鍋燒烤領潮峰會上&#xff0c;華鼎冷鏈科技CEO王君以“AI驅動智慧供應鏈賦能餐飲行業新升級”為主題分享時稱&#xff0c;當前餐飲行業高閉店率…

汽車功能安全 -- TC3xx外部看門狗

之前聊過TC3xx SMU關于內部看門狗&#xff08;CPU Watchdog 和Safety Watchdog&#xff09;Alarm的處理方法。 汽車功能安全--TC3xx SMU之看門狗alarm處理 在里面我們提到了這些Alarm關聯的功能安全機制&#xff1a; SM[HW]:SCU:ENDINIT_WATCHDOG SM[HW]:SCU:SAFETY_WATCHD…

如何為“地方升學導向型”語校建模?Prompt 框架下的宇都宮日建工科專門學校解析(7 / 500)

如何為“地方升學導向型”語校建模&#xff1f;Prompt 框架下的宇都宮日建工科專門學校解析&#xff08;7 / 500&#xff09; 系列說明 500 所日本語言學校結構化建模實戰&#xff0c;第 7 篇。每篇拆解 1 所學校在 Prompt-QA 系統中的建模策略&#xff0c;分享工程經驗&#x…

Flutter 入門指南:從基礎到實戰

介紹 Flutter Flutter 是 Google 開發的開源移動應用軟件開發工具包&#xff08;SDK&#xff09;&#xff0c;用于快速在 iOS 和 Android 上構建高質量的原生界面。Flutter 的一大特點是其跨平臺功能&#xff0c;讓開發者能夠使用同一套代碼基礎為兩個平臺構建應用。這一點通過…

八字命理:梟印奪食的形成原理與解決辦法

梟印奪食(|)含義:原局食神傷官為喜用&#xff0c;印為忌正印/偏印克制了食神/傷官&#xff0c;克制形式可以是蓋頭/截腳/同在天干或者地支時相克(2)表現癥狀:emo、敏感、好面子、不敢開口說話、被環境壓制(3)癥狀剖析:印為忌&#xff1d;他人即地獄&#xff0c;不論正印(吉神)還…

數組和對象的深拷貝和淺拷貝的方法

數組和對象的深拷貝、淺拷貝方法有所不同&#xff0c;以下是常見的實現方式&#xff1a;一、淺拷貝方法&#xff08;數組和對象通用/專用&#xff09;淺拷貝只復制表層數據&#xff0c;嵌套的引用類型仍共享內存。1. 數組的淺拷貝- 擴展運算符&#xff08;...&#xff09;&…

【RK3576】【Android14】開發板概述

獲取更多相關的【RK3576】【Android14】驅動開發&#xff0c;可收藏系列博文&#xff0c;持續更新中&#xff1a; 【RK3576】Android 14 驅動開發實戰指南 1. 引言 RK3576處理器簡介&#xff1a; RK3576 是一顆高性能、低功耗的應用處理器芯片&#xff0c;專為ARM PC、邊緣計算…

凸優化課程學習筆記(一)

凸優化課程學習筆記(一) 課程:B站清華大學陳劍博士《凸優化基礎理論與應用》 優化理論概述 1. 優化序論 定義:凸優化是一門應用極為廣泛的學科,主要研究如何對決策問題進行最優選擇,探討最優解的性質,尋找高效的計算方法,并分析這些方法的理論基礎與實際應用表現。…