标签控件的使用

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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章