在上一节中,讲述了拆分窗口类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属性,否则程序出现崩溃
然后,结合上一节当中的代码,可以得到类似如下的窗口视图(如下视图只截取了部分形式)