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

來源:互聯網
上載者:User

標籤:

接上一節所講,這一節咱們重點講一下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吧

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

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.