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

来源:互联网 发布:it 产业链 编辑:程序博客网 时间:2024/05/17 01:28

在上一节中,讲述了拆分窗口类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<NUM_OF_VIEW_NAME;iVew++){switch (iVew){case eViewName1:AddView(RUNTIME_CLASS(CFormViewName1),gsViewName[iVew],iVew);break;case eViewName2:AddView(RUNTIME_CLASS(CFormViewName2),gsViewName[iVew],iVew);break;case eViewName3:AddView(RUNTIME_CLASS(CFormViewName3),gsViewName[iVew],iVew);break;case eViewName4:AddView(RUNTIME_CLASS(CFormViewName4),gsViewName[iVew],iVew);break;}}}
然后在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视图才会显示出来

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



原创粉丝点击