1.先建立乙個對話方塊mfc應用程式,然後在工具箱裡面把tab control控制項放到對話方塊中的合適位置上。
再在對話方塊類中,宣告乙個ctabctrl變數:
ctabctrl m_tab;
變數m_tab用來與對話方塊中的tab control控制項互動,為此要在dodataexchange函式中加入ddx_control語句:
ddx_control(pdx, idc_tab1, m_tab);
idc_tab1是tab control控制項的id。
2.建立兩個對話方塊程式,用來當做tab control控制項的兩個頁。別忘了把style改為child,border改為none。然後就可以在上面加其他控制項了。
接著分別為這兩個對話方塊建立兩個類,比如cpage1和cpage2。
然後在對話方塊類標頭檔案中,加入這兩個對話方塊物件。同時增加乙個變數int m_curseltab,用了表明是哪個page即將被切換。
int m_curseltab;
cpage1 m_page1;
cpage2 m_page2;
cdialog* pdialog[2]; //用來儲存對話方塊物件指標
在對話方塊類的初始化函式中需要把cpage1、cpage2和tab control關聯起來,並儲存頁面位址,設定初始頁面。
//為tab control增加兩個頁面
m_tab.insertitem(0, _t("farm"));
m_tab.insertitem(1, _t("note"));
//建立兩個對話方塊
m_page1.create(idd_dialog1, &m_tab);
m_page2.create(idd_dialog2, &m_tab);
//設定在tab內顯示的範圍
crect rc;
m_tab.getclientrect(rc);
rc.top += 20;
rc.bottom -= 0;
rc.left += 0;
rc.right -= 0;
m_farm.movewindow(&rc);
m_note.movewindow(&rc);
//把對話方塊物件指標儲存起來
pdialog[0] = &m_page1;
pdialog[1] = &m_page2;
//顯示初始頁面
pdialog[0]->showwindow(sw_show);
pdialog[1]->showwindow(sw_hide);
//儲存當前選擇
m_curseltab = 0;
這裡我們用了乙個cdialog指標陣列來進行儲存tab control的每個頁,陣列的大小是tab control頁面的個數,陣列下標對應著每個頁面的索引(這樣方便快速訪問)。
接下來,為tab control新增訊息處理程式:
on_notify(tcn_selchange, idc_tab1, &ctabdlg::ontcnselchangetab1)
void ctabdlg::ontcnselchangetab1(nmhdr *pnmhdr, lresult *presult)
3.如果要在tab control控制項外面獲取其內部對話方塊中控制項的資料,就需要使用ddx/ddv機制,還要呼叫相應的updatedata函式。
m_page1.updatedata();
m_page2.updatedata();
MFC Tab Control 控制項的使用
1.先建立乙個對話方塊mfc應用程式,然後在工具箱裡面把tab control控制項放到對話方塊中的合適位置上。再在對話方塊類中,宣告乙個ctabctrl變數 ctabctrl m tab 變數m tab用來與對話方塊中的tab control控制項互動,為此要在dodataexchange函式中加...
C 控制項 MenuStrip控制項(選單控制項)
一 概述 選單通過存放按照一般主題分組的命令將功能公開給使用者。menustrip 控制項是此版本的 visual studio 和 net framework 中的新功能。使用該控制項,可以輕鬆建立 microsoft office 中那樣的選單。menustrip 控制項支援多文件介面 mdi ...
隱藏控制項 HiddenField控制項
hiddenfield 控制項hiddenfield 控制項顧名思義就是隱藏輸入框的伺服器控制項 它能讓你儲存那些不需要顯示在頁面上的且對安全性要求不高的資料。也許這個時候應該有這麼乙個疑問,為什麼有了 viewstate session 和cookie 等狀態儲存機制,還需要用起 hiddenfi...