程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 關於 CMFCPropertyGridCtrl 的使用方法 之二 (原創),cmfcpropertysheet

C++ 關於 CMFCPropertyGridCtrl 的使用方法 之二 (原創),cmfcpropertysheet

編輯:C++入門知識

C++ 關於 CMFCPropertyGridCtrl 的使用方法 之二 (原創),cmfcpropertysheet


接上一節所講,這一節咱們重點講一下CMFCPropertyGridCtrl 所支持的數據表格的建立過程

在上一節中,咱們已經了解到了 CMFCPropertyGridCtrl  是要用到實例函數:AddProperty()。現在 咱們來具體分析一下過程

要想建立一個屬性一般來講我們先建立一個項目:如上一節中提到的 “概述”項目屬性。這個屬於的一個大的特點,就是這個屬性並沒有一個對應的值,也就是說 這個也是一個屬性,但是卻不是用來表達一個具體的屬性值,而僅是為了表示一個“組Group”的。

所以,對於屬性的創建,有兩種構造函數:一種是構造一個組屬性,一種是構造一個值屬性。先來看 構造一個組屬性

CMFCPropertyGridProperty(const CString& strGroupName, DWORD_PTR dwData = 0, BOOL bIsValueList = FALSE);

在這個參數列表中 第一個參數是一個 字符串值,這是用於指定組的名稱,也就是組名。用於顯示用的。

所以一般情況下,我們來構造一個組的時候,只需要指定第一個參數就可以了,因為第二、三個參數有默認值,具體的參數說明,可以參考下面的 網址:

https://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=ZH-CN&k=k(afxpropertygridctrl%2FCMFCPropertyGridProperty%3A%3ACMFCPropertyGridProperty);k(CMFCPropertyGridProperty%3A%3ACMFCPropertyGridProperty);k(CMFCPropertyGridProperty);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true

舉個例子,如下面這句話

CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("概述"));

有了這個組屬性後,那們就需要在組屬性裡面添加一個值屬性:值屬性的構造函數如下

CMFCPropertyGridProperty(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDescr = NULL, DWORD_PTR dwData = 0,
        LPCTSTR lpszEditMask = NULL, LPCTSTR lpszEditTemplate = NULL, LPCTSTR lpszValidChars = NULL);

在這裡也有很多的參數,我們最關心的是前面幾個屬性

strName :表示屬性的名稱

varValue:表示屬性的值

lpszDescr :此屬性的描述內容,用於在下方的描述框內顯示的描述內容。

一般這三個屬性就足夠了。

舉個例子:

pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("標題"), (_variant_t)_T("標題1"), _T("用於在視圖中顯示的標題內容")));

上面這句話解釋一下:後面的New語句就是生成一個值屬性。在這個構造函數中,指定了 名稱 、值還有描述內容。

然後利用 屬性的一個實例函數 AddSubItem 將New 生成的值屬性添加到 組屬性中。這樣 在 組屬性“概述”中,就有了一個“標題”屬性,他的值是 字符“標題1”,描述的內容 為“用於在視圖中顯示的標題內容”。是不是突然發現 好神奇呀!

同理,我們也可以再造一個屬性

pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("級別"), var0, _T("當前顯示計劃的級別")));

好了,我們現在有一個組屬性,並且組屬性裡面還有兩個值屬性。這個組,我感覺已經做好了。現在要將做好的這個大饅頭放在鍋裡面。一句話搞定:

m_wndPropList.AddProperty(pGroup1);

可能有些 學將我寫的代碼寫到自己的程序中不能用,因為裡面在var0是個鳥東西呀!這個東西,需要單獨拿出來說一下。

因為 CMFCPropertyGridCtrl  控件,他的參數用了一個特殊的類型 COleVariant 。這是個那門子類型,搞不懂,查了一下資料,好像還很先進,管它媽怎麼先進,關鍵得會用呀。百度一下吧,找到了一些用法,這東西可以代表任意類型的數據,可以是字符串也可以是 數字。就是用的時候,必須要指定一下才行,要不然,他工作起來會出錯的。當然,如果類型非常明確也可不指定,它會自己判斷一下。這種類型好像與 _variant_t類型是親戚,所以很多情況下,這兩個類型可以互用。但是構造函數上只用了COleVariant  ,我覺得用 COleVariant  可能更靠譜一些。這東西怎麼用呢。

第一步:定義一個變量   第二步:直接賦值  第三步:轉換類型 。三步就可以了:舉個例子

COleVariant var0;
var0.intVal = 0;
var0.ChangeType(VT_I4);

由於我想要用var0 保存一個 int 類型的數據,所以,我要將值 保存至 intVal  變量中,如果你是其它變量,就要保存至正確的變量位置。

然後,將此變量 轉換成 VT_I4 這個類型,就是一個整數型。
具體的說明,就請查一下 MSDN吧

有了上面這個介紹,你的程序,應該就可以運行起來了。

今天,就先說到這裡,明天介紹,如果讀取這裡面的值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved