C++中MFC Tab Control控件的使用詳解
1. 新建一個(gè)MFC工程, 取名MyTab, 選擇Dialog based, 然后Finish.
2. 刪除對(duì)話框上默認(rèn)添加的三個(gè)控件. 添加Tab Control控件并在Property屬性中設(shè)置ID為IDC_TABTEST 在More Styles里勾上Bottom. 調(diào)速尺寸使其布滿(mǎn)整個(gè)對(duì)話框, 我這邊Tab Control的尺寸最后為164X203. 在ClassWizard為其添加變量, 變量名為m_tab. 類(lèi)型為CTabCtrl.
3. 在對(duì)話框的初始化函數(shù)OnInitDialog里面添加如下代碼:
m_tab.InsertItem(0,"參數(shù)一"); //添加參數(shù)一選項(xiàng)卡 m_tab.InsertItem(1,"參數(shù)二"); //添加參數(shù)二選項(xiàng)卡 m_tab.InsertItem(2,"結(jié)果"); //添加結(jié)果選項(xiàng)卡
4.在對(duì)話框資源里面添加三個(gè)對(duì)話框資源, ID分別命名為IDD_PARA1, IDD_PARA2, IDD_RESULT. 字體為宋體, 字號(hào)為9, style為Child, Border為None, 寬度調(diào)整為161. 再分別為其添加對(duì)應(yīng)的基于CDialog類(lèi)CPara1, CPara2, CResult.
5. 在CMyTabDlg類(lèi)中添加三個(gè)成員變量m_para1, m_para2, m_result, 分別是三個(gè)子對(duì)話框的實(shí)例. 代碼如下:
CResult m_result; CPara2 m_para2; CPara1 m_para1;
6. 在IDD_PARA1對(duì)話框上添加靜態(tài)文本控件內(nèi)容為"參數(shù)一" 再在后面插入一個(gè)文本框控件, 用ClassWizard將其關(guān)聯(lián)為一個(gè)int型變量,名為m_nPara1;
在IDD_PARA2對(duì)話框上添加靜態(tài)文本控件內(nèi)容為"參數(shù)二" 再在后面插入一個(gè)文本框控件, 用ClassWizard將其關(guān)聯(lián)為一個(gè)int型變量,名為m_nPara2;
在IDD_RESULT對(duì)話框上添加靜態(tài)文本控件內(nèi)容為"結(jié)果" 再在后面插入一個(gè)文本框控件, 用ClassWizard將其關(guān)聯(lián)為一個(gè)int型變量,名為m_nResult;
7. 為CPara1類(lèi)添加成員函數(shù)int GetParaValue() 代碼如下:
int CPara1::GetParaValue() ...{ return m_nPara1; }
為CPara2類(lèi)添加成員函數(shù)int GetParaValue() 代碼如下:
int CPara2::GetParaValue() ...{ return m_nPara2; }
為CResult類(lèi)添加成員函數(shù)void SetResultValue(int nResult) 代碼如下:
void CResult::SetResultValue(int nResult) ...{ m_nResult = nResult; }
8. 在IDD_MYTAB_DIALOG對(duì)話框的初始化函數(shù)OnInitDialog里面添加如下代碼:
//關(guān)聯(lián)對(duì)話框,并且將IDC_TABTEST控件設(shè)為父窗口 m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TABTEST)); m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TABTEST)); m_result.Create(IDD_RESULT,GetDlgItem(IDC_TABTEST)); //獲得IDC_TABTEST客戶(hù)區(qū)大小 CRect rs; m_tab.GetClientRect(&rs); //調(diào)整子對(duì)話框在父窗口中的位置 rs.top+=1; rs.bottom-=60; rs.left+=1; rs.right-=2; //設(shè)置子對(duì)話框尺寸并移動(dòng)到指定位置 m_para1.MoveWindow(&rs); m_para2.MoveWindow(&rs); m_result.MoveWindow(&rs); //分別設(shè)置隱藏和顯示 m_para1.ShowWindow(true); m_para2.ShowWindow(false); m_result.ShowWindow(false); //設(shè)置默認(rèn)的選項(xiàng)卡 m_tab.SetCurSel(0);
9. 添加Tab Control控件的TCN_SELCHANGE事件響應(yīng)函數(shù)OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,函數(shù)體代碼如下:
int CurSel = m_tab.GetCurSel(); switch(CurSel) ...{ case 0: m_para1.ShowWindow(true); m_para2.ShowWindow(false); m_result.ShowWindow(false); break; case 1: m_para1.ShowWindow(false); m_para2.ShowWindow(true); m_result.ShowWindow(false); break; case 2: m_para1.ShowWindow(false); m_para2.ShowWindow(false); m_result.ShowWindow(true); break; default: ; } *pResult = 0;
10. 在IDD_MYTAB_DIALOG對(duì)話框下面添加一個(gè)按鈕, 標(biāo)題為"計(jì)算" 為其添加事件響應(yīng)函數(shù), 代碼如下:
m_para1.UpdateData(true); m_para2.UpdateData(true); m_result.SetResultValue(m_para1.GetParaValue()+m_para2.GetParaValue()); m_result.UpdateData(false);
以上所述就是不問(wèn)的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別
本文主要介紹了C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Opencv使用Stitcher類(lèi)圖像拼接生成全景圖像
這篇文章主要為大家詳細(xì)介紹了Opencv使用Stitcher類(lèi)圖像拼接生成全景圖像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C++中typedef 及其與struct的結(jié)合使用
這篇文章主要介紹了C++中typedef 及其與struct的結(jié)合使用,需要的朋友可以參考下2014-02-02C++實(shí)現(xiàn)LeetCode(103.二叉樹(shù)的之字形層序遍歷)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(103.二叉樹(shù)的之字形層序遍歷),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++分析如何用虛析構(gòu)與純虛析構(gòu)處理內(nèi)存泄漏
虛析構(gòu)和純虛析構(gòu)共性:可以解決父類(lèi)指針釋放子類(lèi)對(duì)象,都需要有具體的函數(shù)實(shí)現(xiàn);虛析構(gòu)和純虛析構(gòu)區(qū)別:如果是純虛析構(gòu),該類(lèi)屬于抽象類(lèi),無(wú)法實(shí)例化對(duì)象2022-08-08C++實(shí)現(xiàn)TCP客戶(hù)端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解
這篇文章主要為大家介紹了C++實(shí)現(xiàn)TCP客戶(hù)端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10C++ vector容器實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了C++ vector容器實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼
C 標(biāo)準(zhǔn)庫(kù)提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時(shí)間。本文將通過(guò)一些簡(jiǎn)單的示例為大家講講C++獲取系統(tǒng)時(shí)間的具體方法,需要的可以參考一下2022-12-12C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的聊天室功能
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06