1 2 3 4 5 6 7 8 |
typedef struct tagTCITEMHEADER { UINT mask; // 掩码,可以为TCIF_IMAGE(iImage成员有效)、TCIF_RTLREADING、TCIF_TEXT(pszText成员有效) UINT lpReserved1; // 预留 UINT lpReserved2; // 预留 LPTSTR pszText; // 标签文本字符串 int cchTextMax; int iImage; // 图标在标签控件图像序列中的索引 } TCITEMHEADER, *LPTCITEMHEADER; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
typedef struct tagTCITEM { UINT mask; // 掩码,可以是TCIF_IMAGE(iImage成员有效)、TCIF_PARAM(lParam成员有效)、TCIF_RTLREADING、TCIF_STATE、TCIF_TEXT(pszText成员有效) #if (_WIN32_IE >= 0x0300) DWORD dwState; DWORD dwStateMask; #else UINT lpReserved1; UINT lpReserved2; #endif LPTSTR pszText; int cchTextMax; int iImage; LPARAM lParam; // 与标签页关联的32位数据 } TCITEM, *LPTCITEM; |
1 2 3 4 |
typedef struct tagTCHITTESTINFO { POINT pt; // 鼠标点击测试的客户区坐标 UINT flags; // 接收点击测试的结果。有以下几种:TCHT_NOWHERE(坐标点不在标签上)、TCHT_ONITEM(坐标点在标签上但不在标签文本或图标上)、TCHT_ONITEMICON(坐标点在标签图标上)、TCHT_ONITEMLABEL(坐标点在标签文本上) } TCHITTESTINFO, *LPTCHITTESTINFO; |
1 2 3 4 5 |
typedef struct tagNMTCKEYDOWN { NMHDR hdr; WORD wVKey; UINT flags; } NMTCKEYDOWN; |
1 2 3 4 5 6 |
virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); |
具体代码:
//导入图片,绑定imagelist为实现带图标的头
void CTabCtrlDlg::InitTab()
{
////导入图片,绑定imagelist为实现带图标的头
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP_1);
m_imgList.Create(16, 16, ILC_COLOR24 | ILC_MASK, 6, 1);
m_imgList.Add(&bmp, RGB(255, 255, 255));
TCITEM tcitem;
//添加选项卡
m_TabCtrl.InsertItem(0,TEXT("Tab1")); //添加参数一选项卡
m_TabCtrl.InsertItem(1,TEXT("Tab2")); //添加参数二选项卡
m_TabCtrl.InsertItem(2,TEXT("Tab3")); //添加参数三选项卡
m_TabCtrl.SetMinTabWidth(100);//设置选项卡宽度
m_TabCtrl.SetImageList(&m_imgList);//绑定imagelist
m_imgList.Detach();
tcitem.mask=TCIF_IMAGE;//设置图标格式
for (int i=0;i<3;i++)
{
m_TabCtrl.GetItem(i,&tcitem);
tcitem.iImage=i;
m_TabCtrl.SetItem(i,&tcitem);
}
m_Dlg1.Create(IDD_TAB1DLG,GetDlgItem(IDC_TAB_1));//创建对话框 父类为Tab Control所在的对话框
m_Dlg2.Create(IDD_TAB2DLG,GetDlgItem(IDC_TAB_1));
m_Dlg3.Create(IDD_TAB3DLG,GetDlgItem(IDC_TAB_1));
}
//调整位置
void CTabCtrlDlg::ResetPosition()
{
if(m_TabCtrl.GetSafeHwnd())
{
CRect rs;
m_TabCtrl.GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top += 23;
rs.bottom -= 4;
rs.left += 2;
rs.right -= 4;
//设置子对话框尺寸并移动到指定位置
m_Dlg1.MoveWindow(&rs);
m_Dlg2.MoveWindow(&rs);
m_Dlg3.MoveWindow(&rs);
//调整子对话框里控件的位置
//m_Dlg1.GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL, 500, 4, 50, 22, SWP_NOZORDER);
//分别设置隐藏和显示
m_Dlg1.ShowWindow(true);
m_Dlg2.ShowWindow(false);
m_Dlg3.ShowWindow(false);
//设置默认的选项卡
m_TabCtrl.SetCurSel(0);
}
}
//添加消息处理
void CTabCtrlDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
int CurSel = m_TabCtrl.GetCurSel();
switch(CurSel)
{
case 0:
m_Dlg1.ShowWindow(true);
m_Dlg2.ShowWindow(false);
m_Dlg3.ShowWindow(false);
break;
case 1:
m_Dlg1.ShowWindow(false);
m_Dlg2.ShowWindow(true);
m_Dlg3.ShowWindow(false);
break;
case 2:
m_Dlg1.ShowWindow(false);
m_Dlg2.ShowWindow(false);
m_Dlg3.ShowWindow(true);
break;
default:
;
}
}