1。建立對話框資源,添加標籤控件IDC_TAB1,在標籤控件下面添加靜態框IDC_STATIC_DLG作爲標籤頁的顯示位置區域。
2。標籤上面不能直接像對話框一樣的拖入相應的空間,所以我們要想在不同的標籤頁顯示內容,就要重新創建對話框,注意,重新創建的對話框dialog的個數應該和你的標籤數是一致的,這裏我創建了兩個標籤,所以我又import了兩個對話框:IDD_JIAMIDIALOG和IDD_JIEMIDIALOG,屬性styles中設置:style爲Child,Border設置爲None。
到現在對話框的顯示的表面工作已經完成,但是運行後仍然不能顯示,還要添加如下代碼:(我的工程叫AES爲例)
1.雙擊標籤控件(下面函數在在AESDlg.cpp中 ),添加下面紅色的代碼
void CAESDlg::OnSelchangeencript(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nSelect = m_Tab.GetCurSel();
if (nSelect >= 0)
DoTab(nSelect);
*pResult = 0;
}
2。 在AESDlg.cpp中添加以下函數(我設置了2個標籤所以爲bTab[2]):
void CAESDlg::DoTab(int nSel)
{
if (nSel>1)
nSel = 1; // 確定nSel值不能超過範圍
if (nSel<0)
nSel = 0;
BOOL bTab[2];
bTab[0] = bTab[1] = FALSE;
bTab[nSel] = TRUE;
// 切換對話框的顯示和隱藏
SetDlgState(m_jiami, bTab[0]);
SetDlgState(m_jiemi, bTab[1]);
}
void CAESDlg::SetDlgState(CWnd *pWnd, BOOL bShow)
{
pWnd->EnableWindow(bShow);
if (bShow)
{
pWnd->ShowWindow(SW_SHOW);
pWnd->CenterWindow();
}
else pWnd->ShowWindow(SW_HIDE);
}
3。 別忘記在CAESDlg 。h中添加已添加函數的申明哦,否則會報錯的喲~
class CAESDlg : public CDialog
{
// Construction
public:
CAESDlg(CWnd* pParent = NULL); // standard constructor
void DoTab(int nSel);
void SetDlgState(CWnd *pWnd, BOOL bShow);
JIAMI *m_jiami; //我給第一個子對話框創建的對象
JIEMI *m_jiemi; //第二個子對話框創建的對象
。。。。
。。。
。。。
}
4。在函數 OnInitDialog中還需要做些工作:
BOOL CAESDlg::OnInitDialog()
{
CDialog::OnInitDialog();
。。。。。
。。。。
// TODO: Add extra initialization here
m_TapImage.Create(16, 16, ILC_COLOR|ILC_MASK, 2, 0); // 創建圖像列表
m_TapImage.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); // 將圖標加到圖像列表中
m_TapImage.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Tab.SetImageList(&m_TapImage); // 設置TAB控件所使用的圖像列表,m_Tab是標籤控件的對象
m_Tab.InsertItem(0, "加密", 0);//第一個標籤顯示
m_Tab.InsertItem(1, "解密", 1);//第二個標籤顯示
m_Tab.SetCurSel(0); //設置當前標籤
m_jiami = new JIAMI;
m_jiami->Create(IDD_JIAMIDIALOG, GetDlgItem(IDC_STATIC_DLG));
m_jiemi = new JIEMI;
m_jiemi->Create(IDD_JIEMIDIALOG, GetDlgItem(IDC_STATIC_DLG));
DoTab(0); //默認顯示第一個標籤頁的內容
return TRUE; // return TRUE unless you set the focus to a control
}
O(∩_∩)O哈哈哈~ 是不是已經可以自由的切換控件了呢 要多調試一下 找個現成的例子看看 就OK啦