MFC一一单文档下实现多标签视图(继承CTabView类)

在上一节中,讲述了拆分窗口类CSplitterWnd,具体见:http://blog.csdn.net/xuanyin235/article/details/77948615

其间提到了CTabViewEx视图类,这个类继承自CTabView类,接下来我们讲解一下单文档视图中有关多标签视图的具体实现。

(1).实现CTabViewEx继承自CTabView,并在OnInitialUpdate()消息响应函数中利用AddView函数添加对应的FromView类型的视图Dialog

enum _ENMU_VIEW_NAME
{
   eViewName1,
   eViewName2,
   eViewName3,
   eViewName4,
   NUM_OF_VIEW_NAME
};

static char *gsViewName[NUM_OF_VIEW_NAME]=
{
   "MyView Name1",
   "MyView Name2",
   "MyView Name3",
   "MyView Name4"
};
void CTabViewEx::OnInitialUpdate()
{
	CTabView::OnInitialUpdate();

	// TODO: 在此添加专用代码和/或调用基类
	for (int iVew=0;iVew
然后在OnCreate函数中添加对应摆放格式:

int CTabViewEx::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CTabView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码

	this -> GetTabControl().SetLocation( CMFCTabCtrl:: LOCATION_TOP);    //方向上顶
	this -> GetTabControl().ModifyTabStyle( CMFCTabCtrl:: STYLE_3D_ONENOTE);    //风格
	//this -> GetTabControl().EnableAutoColor( TRUE );  //自动着色
	this -> GetTabControl().SetTabBorderSize( 0 ); //边框大小
	//this -> GetTabControl().HideSingleTab( TRUE );   //单个Tab时候不显示Tab标签
	//this -> GetTabControl().EnableTabSwap( FALSE );    //禁止拖动
	return 0;
}

另外,这里有个注意点,就是在CTabViewEx类定义中加入DECLARE_DYNCREATE(CTabViewEx)

并在对应的cpp文件中加入IMPLEMENT_DYNCREATE(CTabViewEx, CTabView),这样FromView类型的Dialog视图才会显示出来

切记:CFromView要设置为Child属性,否则程序出现崩溃

然后,结合上一节当中的代码,可以得到类似如下的窗口视图(如下视图只截取了部分形式)


你可能感兴趣的:(C++,MFC)