MFC新增屬性頁雜記

2021-07-27 06:48:52 字數 2779 閱讀 4763

為了能實現在同乙個頁面實現多個頁面的切換效果。cpropertysheet要與cpropertypage一起使用。

2.       在對話方塊資源中插入兩個對話方塊idd_dialog1、idd_dialog2,作為兩個子頁。為這兩個對話方塊增加兩個類,分別為cpage1和cpage2,其基類選擇cpropertypage。

3.       增加乙個屬性頁類cmysheet, 其基類選擇cpropertysheet。

4.       在類cmysheet中增加兩個成員變數m_page1,型別為cpage1,m_page2,型別為cpage2。

5.       在類cmysheet的建構函式中新增如下兩句,增加兩個頁。

cmysheet

::cmysheet

(lpctstr

pszcaption

, cwnd

* pparentwnd

, uint

iselectpage):

cpropertysheet

(pszcaption

, pparentwnd

, iselectpage)6.

()中新增如下兩句,將原來宣告的物件去掉。改為

cmysheet

dlg("test");

m_pmainwnd

= &dlg

;7.    

最後別忘了在「pagesheet.cpp」檔案中新增標頭檔案「mysheet.h」。

效果如下:

在**dlg.h中新增如下**

cpropertysheet m_sheet;

cpage1 m_prop1;

cpage2 m_prop2;

在**dlg.cpp的初始化中新增如下**

m_sheet.addpage(&m_prop1);

m_sheet.addpage(&m_prop2);

m_sheet.create(this,ws_visible|ws_child);

m_sheet.setwindowpos(null,630,80,1050,1000,swp_nosize );//視窗x.y,cx寬,cy高度 swp_nosize

這樣就可以實現兩者的切換。

為了方便引用,把cpage1.h和cpage2.h中的類的定義放在了**dlg.h中。

關於list control

初始化如下

crect rect;  

m_list_ccpa2l.setextendedstyle(m_list_ccpa2l.getextendedstyle() | lvs_ex_checkboxes);//加入核取方塊

// 獲取程式語言列表檢視控制項的位置和大小

m_list_ccpa2l.getclientrect(&rect);

// 為列表檢視控制項新增全行選中和柵格風格

m_list_ccpa2l.setextendedstyle(m_list_ccpa2l.getextendedstyle() | lvs_ex_fullrowselect | lvs_ex_gridlines);

m_list_ccpa2l.insertcolumn(0, _t("變數"), lvcfmt_center, 2*rect.width()/5, 0);

m_list_ccpa2l.insertcolumn(1, _t("位址"), lvcfmt_center, 2*rect.width()/5, 1);

m_list_ccpa2l.insertcolumn(2, _t("大小"), lvcfmt_center, rect.width()/5, 2);

使用時

m_list_ccpa2l.insertitem(0, _t(par[i]));   

m_list_ccpa2l.setitemtext(0, 1, _t(paraddr[i]));

m_list_ccpa2l.setitemtext(0, 2, _t(byte[i]));

為了達到修改list control中數值的目的,新增乙個編輯框,關聯變數edit,新增訊息響應

on_notify(nm_dblclk,idc_list_display, &cpage1::onnmdblclklist3)

on_notify( vk_return,idc_edit1, &cpage1::onnmclickedit)

void cpage1::onnmdblclklist3(nmhdr *pnmhdr, lresult *presult)

*presult = 0;

} void cpage1::onnmclickedit(nmhdr *pnmhdr, lresult *presult)

並新增pretranslatemessage,用來響應回車

bool cpage1::pretranslatemessage(msg* pmsg) 

} return cdialog::pretranslatemessage(pmsg);

}

這樣下來,滑鼠雙擊數值時就會進入編輯狀態,編輯後回車,就會更新數值。

MFC 使用屬性頁表單

首先插入idd proppage large資源 建立類cpropertypage 建立屬性頁表單cpropertysheet,在標頭檔案中建立cpropertypage變數,在建構函式中載入屬性頁addpage page1 去掉幫助 應用按鈕 cpropertysheet建構函式中新增 this ...

mfc中新增屬性表單

1.主對話方塊中 新增乙個類為cpage 2.在page.h中新增cpropertysheet 物件m sheet 3.新建子對話方塊基於idd proppage large 分別為子對話方塊新建類cpage1,cpage2 4.在page.h中新增cpage1,cpage2的物件m page1,m...

MFC中多屬性頁的實現

在插入 資源 dialog 中選擇多個從 idd proppage large 繼承的屬性頁,如 idd prop1 這些建立的對話方塊就是屬性中的每一頁。用 classwizard 為你的屬性頁定義新的 cpropertypage 繼承類,如 cprop1 和idd prop1 等關聯。用 cla...