MFC一一单文档下实现多标签视图(继承CTabView类)
2017-09-12 22:26
591 查看
在上一节中,讲述了拆分窗口类CSplitterWnd,具体见:http://blog.csdn.net/xuanyin235/article/details/77948615
其间提到了CTabViewEx视图类,这个类继承自CTabView类,接下来我们讲解一下单文档视图中有关多标签视图的具体实现。
(1).实现CTabViewEx继承自CTabView,并在OnInitialUpdate()消息响应函数中利用AddView函数添加对应的FromView类型的视图Dialog
另外,这里有个注意点,就是在CTabViewEx类定义中加入DECLARE_DYNCREATE(CTabViewEx)
并在对应的cpp文件中加入IMPLEMENT_DYNCREATE(CTabViewEx, CTabView),这样FromView类型的Dialog视图才会显示出来
然后,结合上一节当中的代码,可以得到类似如下的窗口视图(如下视图只截取了部分形式)
其间提到了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视图才会显示出来
然后,结合上一节当中的代码,可以得到类似如下的窗口视图(如下视图只截取了部分形式)
相关文章推荐
- MFC 单文档多视图实现(不是完全原创的,但是也不是直接转的,核心看法原创)
- MFC SDI单文档多视图的实现及自由切换(2种实现方式简析)
- MFC单文档多视图的切换的3种实现
- 通过按钮控件实现MDI新建子窗口(MFC自动生成的视图、文档、子框架共用)
- MFC项目开发之单文档多视图实现
- MFC编程(标签控件Tab Control(选项卡控件) 和picture control 来实现视图的切换 )
- MFC单文档多视图的切换的3种实现
- mfc 实现一分文档对应多个视图
- mfc 继承cwnd 实现类似tabControl的标签按钮
- MFC项目开发之单文档多视图实现
- MFC 单文档工程 实现单文档多视图
- MFC多视图共用一文档实现
- MFC学习之路(七)实现多文档的单文档多视图
- windows编程 -MFC多文档多视图实现
- VC 2010 + MFC + MDI多文档视图框架:视图框架窗口激活的消息通知
- MFC单文档中创建多视图
- MFC多文档应用程序同时显示两个视图
- C++--深入分析MFC文档视图结构(项目实践)
- VS2010/MFC 文档视图类项目:初始化和清理文档和视图
- MFC单文档/视图结构源码剖析