Vc++:在标签控件中,标签页面是如何添加和创建的
1个回答
展开全部
给你段代码参考一下。这段是操作标签控件,以添加标签页。具体点哪个标签显示什么内容,还要在标签的消息响应函数中添加显示/隐藏页面的代码。
OnInitDialog()中进行初始化,代码如下:
CImageList imageList;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BMP_TABIMG);
imageList.Create(16, 16, ILC_COLOR24|ILC_MASK, 16, 1);
imageList.Add(&bitmap, RGB(255, 0, 255));
// 将控件子类化到控件类变量,就可以象进行类对象操作一样添加标签页
m_tabCtrl.SubclassDlgItem(IDC_TAB_CTRL, this);
m_tabCtrl.SetImageList(&imageList);
TC_ITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_TEXT | TCIF_IMAGE;
TabCtrlItem.iImage = 0;
TabCtrlItem.pszText = "快捷面板";
m_tabCtrl.InsertItem(0, &TabCtrlItem);
m_pageShortcutBoard.Create(IDD_DLG_SHORTCUT, &m_tabCtrl);
CRect rc;
m_tabCtrl.GetClientRect(&rc);
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28,rc.right-16,rc.bottom-40,SWP_SHOWWINDOW);
TabCtrlItem.mask = TCIF_TEXT | TCIF_IMAGE;
TabCtrlItem.iImage = 1;
TabCtrlItem.pszText = "位置记录";
m_tabCtrl.InsertItem(1, &TabCtrlItem);
m_pagePegRecord.Create(IDD_DLG_PEGRECORD, &m_tabCtrl);
m_pagePegRecord.SetWindowPos(NULL, 4, 28, rc.right-7, rc.bottom-32,SWP_HIDEWINDOW );
imageList.Detach();
bitmap.Detach();
// 初始化结束
// 选择标签的响应函数,在这里边决定显示哪个页面
void CPaveShootDlg::OnTcnSelchangeTabCtrl(NMHDR *pNMHDR, LRESULT *pResult)
{
CRect rc;
m_tabCtrl.GetClientRect (&rc);
switch(m_tabCtrl.GetCurSel())
{
case 0:
// 显示这个页面
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28,rc.right-16,rc.bottom -40,SWP_SHOWWINDOW);
// 隐藏这个页面
m_pagePegRecord.SetWindowPos (NULL, 4, 28, rc.right-7, rc.bottom-32,SWP_HIDEWINDOW );
break;
case 1:
// 隐藏这个页面
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28, rc.right-16, rc.bottom-40, SWP_HIDEWINDOW);
// 显示这个页面
m_pagePegRecord.SetWindowPos (NULL, 4, 28, rc.right-7, rc.bottom-32, SWP_SHOWWINDOW );
break;
}
//*pResult = 0;
}
OnInitDialog()中进行初始化,代码如下:
CImageList imageList;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BMP_TABIMG);
imageList.Create(16, 16, ILC_COLOR24|ILC_MASK, 16, 1);
imageList.Add(&bitmap, RGB(255, 0, 255));
// 将控件子类化到控件类变量,就可以象进行类对象操作一样添加标签页
m_tabCtrl.SubclassDlgItem(IDC_TAB_CTRL, this);
m_tabCtrl.SetImageList(&imageList);
TC_ITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_TEXT | TCIF_IMAGE;
TabCtrlItem.iImage = 0;
TabCtrlItem.pszText = "快捷面板";
m_tabCtrl.InsertItem(0, &TabCtrlItem);
m_pageShortcutBoard.Create(IDD_DLG_SHORTCUT, &m_tabCtrl);
CRect rc;
m_tabCtrl.GetClientRect(&rc);
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28,rc.right-16,rc.bottom-40,SWP_SHOWWINDOW);
TabCtrlItem.mask = TCIF_TEXT | TCIF_IMAGE;
TabCtrlItem.iImage = 1;
TabCtrlItem.pszText = "位置记录";
m_tabCtrl.InsertItem(1, &TabCtrlItem);
m_pagePegRecord.Create(IDD_DLG_PEGRECORD, &m_tabCtrl);
m_pagePegRecord.SetWindowPos(NULL, 4, 28, rc.right-7, rc.bottom-32,SWP_HIDEWINDOW );
imageList.Detach();
bitmap.Detach();
// 初始化结束
// 选择标签的响应函数,在这里边决定显示哪个页面
void CPaveShootDlg::OnTcnSelchangeTabCtrl(NMHDR *pNMHDR, LRESULT *pResult)
{
CRect rc;
m_tabCtrl.GetClientRect (&rc);
switch(m_tabCtrl.GetCurSel())
{
case 0:
// 显示这个页面
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28,rc.right-16,rc.bottom -40,SWP_SHOWWINDOW);
// 隐藏这个页面
m_pagePegRecord.SetWindowPos (NULL, 4, 28, rc.right-7, rc.bottom-32,SWP_HIDEWINDOW );
break;
case 1:
// 隐藏这个页面
m_pageShortcutBoard.SetWindowPos (NULL, 12, 28, rc.right-16, rc.bottom-40, SWP_HIDEWINDOW);
// 显示这个页面
m_pagePegRecord.SetWindowPos (NULL, 4, 28, rc.right-7, rc.bottom-32, SWP_SHOWWINDOW );
break;
}
//*pResult = 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询