1、首先創建一個MFC對話框框架,在對話框資源上從工具箱中添加上一個TabControl控件
2、根據需要修改一下屬性,然后右擊控件,為這個控件添加一個變量,將此控件跟一個CTabCtrl類變量綁定在一起,這里設為m_tabctrl
3、插入兩個新的對話框其屬性作如下修改:
Border:none //邊界為空,這樣它就沒了標題欄
Style :Child // 這樣這個模板就可以當作另一個窗口的子窗口了。
Title Bar:False
在上面加一些控件什么的,具體操作跟普通對話框沒有區別。
完成后從這兩個對話框模板生成新的對話框類CDlg1,CDlg2。
4、在主對話框頭文件CMydlg.h中為新添加進來的2個類增加2個變量:
如:CDlg1 page1;
5、在主對話框的OnInitDialog()函數中添加如下類似的代碼:
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText =_T( "第一頁");
m_tabctrl.InsertItem (0,&item);
item.pszText =_T("第二頁");
m_tabctrl.InsertItem (1,&item);
page1.Create (IDD_DIALOG1,&m_tabctrl);
page2.Create (IDD_DIALOG2,&m_tabctrl);
CRect rect;
m_tabctrl.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;
rect.left+=4;
rect.right-=4;
page1.MoveWindow(&rect);
page2.MoveWindow(&rect);
page1.ShowWindow(TRUE);
m_tabctrl.SetCurSel(0);
6、在主對話中為標簽控件添加一個標簽選擇改變(TCN_SELCHANGE)的控件通知消息,以便在用戶選擇標簽時通知主對話框。在主對話框的編輯界面右擊標簽控件,選擇添加一個事件處理程序,選擇可以完成這個操作。
在事件處理中添加如下代碼,如下例:
int CurSel;
CurSel=m_tabctrl.GetCurSel();
switch(CurSel)
{ case 0:
page1.ShowWindow(TRUE);
page2.ShowWindow(FALSE);
break;
case 1:
page1.ShowWindow(FALSE);
page2.ShowWindow(TRUE);
break;
default:
}
要想知道用戶選擇那個標簽頁,要通過m_tabctrl.GetCurSel() 函數。為了不使顯示的子對話框覆蓋標簽控件的顯示,所以要獲得標簽控件的尺寸然后設置各頁面的尺寸。