CMFCTabCtrl控件的一些消息处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ilson_/article/details/80655010

    1. 首先我从CMFCTabCtrl派生了自己的类CMyMFCTabCtrl,在create完成后设置去掉选中页的关闭按钮属性EnableActiveTabCloseButton(FALSE); 当前选中的Page是不会带关闭按钮的只有在最右侧才会出现,可以看下图样式:


    这时候如果去点击关闭按钮'x',是不会有响应的,所以需要重写OnCommand(WPARAM wParam, LPARAM lParam)

BOOL CMyMFCTabCtrl::OnCommand(WPARAM wParam, LPARAM lParam)
{
	// TODO: Add your specialized code here and/or call the base class

	//关闭当前Tab
	//请注意这句话一定要添加,否则虽然实现了关闭按钮的功能但是却缺少了向左向右滚动的功能
	if ((HWND)lParam == m_btnClose.GetSafeHwnd())
	{
		gpView_->OnFileClose();
		return TRUE;
	}	

	return CMFCTabCtrl::OnCommand(wParam, lParam);
}   

2.  如果你想去掉右键菜单你只需要重写函数而不需要做其他处理OnContextMenu(CWnd* pWnd, CPoint point)

如果你想在去掉右键菜单的同时再需要右键激活选项卡可以做以下处理:

//去掉右键弹出菜单以及右键激活选项卡
void CMyMFCTabCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
{
	// TODO: Add your message handler code here

	//point为全局坐标需要转成当前窗口坐标
	ScreenToClient(&point);
	int iTab = this->GetTabFromPoint(point);	//从右键坐标得到当前坐标底下的Tab页
	if (iTab < 0) return;				    //非Tab页位置不作处理

	this->SetActiveTab(iTab);			    //右键时设置当前页为活动页

	CMFCTabCtrl::OnContextMenu(pWnd, point);	
}    

3.  如果你想修改CMFCTabCtrl中Page页面的标签高度可以添加一个函数:

void SetTabsHeight(int iHeight) { m_nTabsHeight = iHeight; }

    4. 如果你喜欢你还可以设置属性,当CMFCTabCtrl的Page页面为空时会自动隐藏CMFCTabCtrl控件:

HideNoTabs();	//当关闭所有Page页面时隐藏Table控件



猜你喜欢

转载自blog.csdn.net/Ilson_/article/details/80655010