1、首先建立乙個mfc對話方塊框架,在對話方塊資源上從工具箱中新增上乙個tab control 控制項,根據需要修改一下屬性,然後右擊控制項,為這個控制項新增乙個變數,將此控制項跟乙個ctabctrl類變數繫結在一起,這裡設為m_tabctrl
2、建立兩個新的對話方塊資源,其屬性作如下修改:
border:none //邊界為空,這樣它就沒了標題欄
style :child // 這樣這個模板就可以當作另乙個視窗的子視窗了。其它如果沒有必要,就不用改了。
在上面加一些控制項什麼的,具體操作跟普通對話方塊沒有區別。
完成後從這兩個對話方塊模板生成兩個新的對話方塊類。
3、在主對話方塊中為新新增進來的兩個類增加兩個變數:
如:cdialog1 m_mm1;
cdialog2 m_mm2;
4、在主對話方塊的oninitdialog()函式中新增如下類似的**:
tcitem item;
item.mask = tcif_text;
item.psztext = "第一頁";
m_tabctrl.insertitem (0,&item);
item.psztext ="第二頁";
m_tabctrl.insertitem (1,&item);
m_mm1.create (idd_dialog1,&m_tabctrl);
m_mm2.create (idd_dialog2,&m_tabctrl);
m_mm1.setwindowpos (null,10,30,400,100,swp_showwindow);
m_mm2.setwindowpos (null,10,30,400,100,swp_hidewindow );
解釋如下:
兩個insertitem函式的呼叫是為了給標籤控制項增加兩個標籤頁面,文字是標題。
setwindowpos()函式設定這兩個對話方塊在z順序中的位置,顯示或隱藏狀態.。
5、在主對話中為標籤控制項新增乙個標籤選擇改變(tcn_selchange)的控制項通知訊息,以便在使用者選擇標籤時通知主對話方塊。在主對話方塊的編輯介面右擊標籤控制項,選擇新增乙個事件可以完成這個操作。
在事件處理中新增如下**,如下例:
void ctabdialogdlg::ontcnselchangetab1(nmhdr *pnmhdr, lresult *presult)
*presult = 0;
}
要想知道使用者選擇那個標籤頁,要通過m_tabctrl.getcursel() 函式。為了不使顯示的子對話方塊覆蓋標籤控制項的顯示,所以要獲得標籤控制項的尺寸然後設定各頁面的尺寸。
或者:
m_tab.insertitem(0,"第一頁");
m_tab.insertitem(1,"第二頁");
m_tab.insertitem(2,"第三頁");
m_tab.insertitem(3,"第四頁");
m_pagea.create(idd_proppage_a,&m_tab);
m_pageb.create(idd_proppage_b,&m_tab);
m_pagec.create(idd_proppage_c,&m_tab);
m_paged.create(idd_proppage_d,&m_tab);
m_pagea.showwindow(sw_show);
m_pageb.showwindow(sw_hide);
m_pagec.showwindow(sw_hide);
m_paged.showwindow(sw_hide);
MFC控制項的使用方法
ddx control的含義 mfc有所謂的資料交換和資料檢驗 ddx ddv ddx dialog data exchange 將對話方塊中的控制項對應到類的成員變數上,可以令控制項的內容一有改變就自動傳送到變數去,還可以借mfc提供的ddv設定欄位的合理範圍。如果對變數內容有任何 確認規則 的話...
MFC 對話方塊中tab控制項的使用
1 首先建立乙個mfc對話方塊框架 在對話方塊資源上從工具箱中新增上乙個tab control 控制項,根據需要修改一下屬性,然後右擊控制項,為這個控制項新增乙個變數,將此控制項跟乙個ctabctrl類變數繫結在一起,這裡設為m tabctrl 2 建立兩個新的對話方塊資源,其屬性作如下修改 bor...
MFC 虛擬列表控制項的使用方法
問題 軟體需要從網路上每次獲取乙個10000byte的資料報,並通過列表實時顯示出來。列表有兩列,除去表頭,有10000行。開始用mfc自帶的listctrl控制項,每次獲得10000個的資料顯示的時候重新整理需要很長時間,顯示很慢。解決方法 使用虛擬列表。具體步驟 1.將listctrl控制項的o...