上图是VS2008的MFCTabCtrl控件标签页效果还是不错的(需要打SP1补丁),使用起来也比以前的CTabCtrl方便许多,但是这个控件有一个BUG, 就是在非多文档程序中关闭按钮无法正常使用,网上找了一下基本都没彻底讲清楚。自己动手,丰衣足食!问题还是自己弄懂的好,话不多说了,我贴一下解决关闭按钮的代码:
// 解决 CMFCTabCtrl 控件标签页“关闭”按钮的BUG
void CMFCTabCtrlEx::OnLButtonDown(UINT nFlags, CPoint point)
{
CMFCTabCtrl::OnLButtonDown(nFlags, point);
// 获取Tab的数量
if (GetTabsNum() == 0) return;
// 获取当前选择的Tab
int sel = GetActiveTab();
// 获取关闭按钮的区域
CRect rcCloseBtn;
rcCloseBtn = GetTabCloseButton();
if (rcCloseBtn.PtInRect(point))
{
if(MessageBox(_T("确认关闭该标签页?"), _T("关闭提示"), MB_YESNO) == IDYES)
{
// 关闭当前Tab页关联窗口
GetActiveWnd()->SendMessage(WM_CLOSE);
// 删除当前Tab
RemoveTab(sel);
}
}
}