標籤控件的使用

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啦

發佈了38 篇原創文章 · 獲贊 6 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章