在mfc當中使用tab control控制項切換不同的介面,使用起來會複雜一些,至少是比qt中的tab widget複雜得多。我接下來會以乙個mfc對話方塊應用程式為例子,說明tab control控制項的簡單使用方法。
1.1建立乙個mfc對話方塊應用程式,在對話方塊中拖入tab control控制項,效果如下:
1.2在對話方塊類中,宣告乙個ctabctrl變數:
ctabctrl m_tab;
變數m_tab用來與對話方塊中的tab control控制項互動,為此要在dodataexchange函式中加入ddx_control語句:
2.1在資源中插入兩個對話方塊,作為tab control控制項切換的介面,然後必須將這兩個對話方塊的border屬性設定為none,style設定為child,設定後的效果如下圖所示:
2.2為建立的兩個對話方塊建立兩個類,如ctestdlg1,ctestdlg2,新增類的方法:右擊對話方塊介面,在彈出框中選擇新增類;
3.1在tab control控制項所在的對話方塊類的標頭檔案中新增以下內容並新增切換頁面對話方塊的標頭檔案:
public:
int m_curseltab;
ctestdlg1 m_page1;
ctestdlg2 m_page2;
cdialog* pdialog[2]; //用來儲存對話方塊物件指標
3.2在對話方塊類的初始化函式中需要把ctestdlg1、ctestdlg2和tab control關聯起來,並儲存頁面位址,設定初始頁面,在oninitdialog()中新增以下實現**:
這裡我們用了乙個cdialog指標陣列來進行儲存tab control的每個頁面,陣列的大小是tab control頁面的個數,陣列下標對應著每個頁面的索引(這樣方便快速訪問)。//為tab control增加兩個頁面
m_tab.insertitem(0, _t("測試1"));
m_tab.insertitem(1, _t("測試2"));
//建立兩個對話方塊
m_page1.create(idd_dialog_test1, &m_tab);
m_page2.create(idd_dialog_test2, &m_tab);
//設定在tab內顯示的範圍
crect rc;
m_tab.getclientrect(rc);
rc.top += 20;
rc.bottom -= 0;
rc.left += 0;
rc.right -= 0;
m_page1.movewindow(&rc);
m_page2.movewindow(&rc);
//把對話方塊物件指標儲存起來
pdialog[0] = &m_page1;
pdialog[1] = &m_page2;
//顯示初始頁面
pdialog[0]->showwindow(sw_show);
pdialog[1]->showwindow(sw_hide);
//儲存當前選擇
m_curseltab = 0;
3.3為tab control新增訊息處理程式,雙擊tab control控制項,自動進入訊息處理程式**:
MFC控制項程式設計 Tab Control
tab控制項的使用 1 插入tab控制項的資料項 標籤 ctabctrl insertitem 2 以tab控制項為父視窗建立對話方塊 3 調整對話方塊大小 4 在tab控制項的selchange訊息處理函式中,根據當前選項的索引設定對話方塊的顯示狀態。新建乙個基於對話方塊的工程,拖放乙個tab c...
在MFC中使用Tab Control
說實話,我剛開始看見tab control的時候,覺得很簡單。哪知道用了一下,才發現自己錯了。要用好它,還是需要一些技巧的。經過網上搜尋資料,以及我自己的摸索,把一些要點記錄在這裡。tab control的執行效果有點像property sheet,但兩者還是有一些區別。我的理解就是property...
MFC中Tab Control的使用
一 tabcontrol使用步驟 1 專案中新增2個檔案 ctabsheet.h和ctabsheet.cpp 2 新增tabcontrol控制項,新增變數m tab,注意變數型別為ctabsheet。3 新增2個視窗,設定屬性border為none,style為child,並且給2個視窗新增對應的....