使用方法:
1.添加TabCtrl控件,右键ClassWizard中关联变量CTabCtrl m_TabCtrl。
2.新建对话框IDD_DIALOG1、IDD_DIALOG2设置属性Style为Child、Border为None,右键ClassWizard中创建新类,CDialog CPage1、CDialog CPage2
3.在主对话框窗口中添加变量CPage1 m_Page1、CPage2 m_Page2,添加头文件#include "Page1.h"、#include "Page2.h"。再添加变量CDialog* m_PageArry[PageNum]、#define PageNum 2,在初始化函数OnInitDialog()中添加代码:
int i = 0;
CString strTitle[] = {L"进程管理",L"文件管理"};
for (i = 0; i < sizeof(strTitle)/sizeof(CString); i ++)
{
m_TabCtrl.InsertItem(i,strTitle[i]);
}
UINT uDialogID[] = {IDD_DIALOG1,IDD_DIALOG2};
m_PageArry[0] = &m_Page1;
m_PageArry[1] = &m_Page2;
for (i = 0; i < sizeof(uDialogID)/sizeof(UINT); i ++)
{
m_PageArry[i]->Create(uDialogID[i],&m_TabCtrl);
}
CRect rc;
m_TabCtrl.GetClientRect(&rc);
rc.top += 20;
rc.bottom -= 8;
rc.left += 10;
rc.right -= 10;
for (i = 0; i < PageNum; i++)
{
m_PageArry[i]->MoveWindow(&rc);
}
m_PageArry[0]->ShowWindow(SW_SHOW);
4.右键TabCtrl控件,在ClassWizard中添加Message Map:TCN_SELCHANGE,编辑此函数:
void CAaaDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
int iCur = m_TabCtrl.GetCurSel();
ShowPageX(iCur);
*pResult = 0;
}
5.添加ShowPageX函数:
void CAaaDlg::ShowPageX(int nPageID)
{
for (int i = 0; i < PageNum; i++)
{
m_PageArry[i]->ShowWindow(SW_HIDE);
}
m_PageArry[nPageID]->ShowWindow(SW_SHOW);
}
如果想要在Tab标签上添加图标则添加如下操作:
1.在主对话框中添加变量CImageList m_ImageList;并在资源中插入ICON图标资源。
2.修改OnInitDialog()中的代码,在上面代码的int i = 0;后面添加:
UINT uIconID[] = {IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5};
m_ImageList.Create(16,16,ILC_COLOR24,sizeof(uIconID)/sizeof(UINT),10);
m_ImageList.SetBkColor(RGB(255,255,255));
for (i = 0; i < sizeof(uIconID)/sizeof(UINT); i++)
{
m_ImageList.Add(AfxGetApp()->LoadIcon(uIconID[i]));
}
m_TabCtrl.SetImageList(&m_ImageList);
并修改m_TabCtrl.InsertItem(i,strTitle[i]);为m_TabCtrl.InsertItem(i,strTitle[i],i);即可。