转载地址:http://blog.csdn.net/akof1314/article/details/5618454

The CTabView class simplifies the use of the tab control class (CMFCTabCtrl ) in applications that use MFC's
document/view architecture.

class CTabbedView : public CView
Members


Public Methods

Name

Description

CTabView::AddView

Adds a new view to the tab control.

CTabView::FindTab

Returns the index of the specified view in the tab control.

CTabView::GetActiveView

Returns a pointer to the currently active view

CTabView::GetTabControl

Returns a reference to the tab control associated with the view.

CTabView::RemoveView

Removes the view from the tab control.

CTabView::SetActiveView

Makes a view active.

Protected Methods

Name

Description

CTabView::IsScrollBar

Called by the framework when creating a tab view to determine whether the tab view has a shared horizontal scroll bar.

CTabView::OnActivateView

Called by the framework when the tab view is made active or inactive.


使用CTabView要特别注意获取视图的指针的操作,一般的途径获取只能获取CTabView里面的当前View不能获取到CTabView指针,必须通过下面方法获取,以下为在主框架获取CTabView视图指针的示例:

void  CMainFrame:: OnGetBlog() 
{   

    CChildFrame * pChildFrm =  ( CChildFrame *) GetActiveFrame();  

    CView *  pView =  pChildFrm-> GetActiveView(); 

    CMFCTabCtrl *  pParent1 =  ( CMFCTabCtrl *) pView-> GetParent(); 

    CXXXTabView *  pTabView =( CXXXTabView *)  pParent1-> GetParent();  

    pTabView-> OnBlog();    //调用CTabView视图类里面的函数
}

要禁止CTabView里面的Tab拖动,只需要在CTabView里面调用下面:

this -> GetTabControl().EnableTabSwap( FALSE );

一些CTabView样式设置,如下:

void  CXXXTabView:: OnInitialUpdate() 


    CTabView:: OnInitialUpdate(); 

    AddView ( RUNTIME_CLASS ( CView1),  _T( " simple " ),  100 ); 

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

若是要禁止CTabView上的滚动条,只要在CTabView的头文件上,定义以下函数即可:

BOOL  IsScrollBar ()  const 


    return  FALSE 
}

在基于CTabView的多文档中,遍历每个CTabView视图可以通过获取框架指针。下面是关闭除当前视图外的其余视图:

void CMainFrame::OnFileAllClose()
{

    CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

    CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();   

    CView * pView;

    CMFCTabCtrl * pParent1;

    CXXXTabView * pTabView;

    CDocument* pDoc;

    CMDIChildWnd *pChild2=pFrame->MDIGetActive();

    if (pFrame)

    {

        //依次关闭右边视图
        pFrame->MDINext();

        pChild2=pFrame->MDIGetActive();

        while (pChild2!=pChild)

        {           

            pView = pChild2->GetActiveView();

            pParent1 = (CMFCTabCtrl *)pView->GetParent();

            pTabView =(CXXXTabView *) pParent1->GetParent();

            pDoc = pTabView->GetDocument();    

            pDoc->OnCloseDocument();         

            pChild2=pFrame->MDIGetActive();

        }

        //依次关闭左边视图
        pFrame->MDIPrev();

        pChild2=pFrame->MDIGetActive();

        while (pChild2!=pChild)

        {

            pView = pChild2->GetActiveView();

            pParent1 = (CMFCTabCtrl *)pView->GetParent();

            pTabView =(CXXXTabView *) pParent1->GetParent();

            pDoc = pTabView->GetDocument();    

            pDoc->OnCloseDocument();

            pFrame->MDIPrev();

            pChild2=pFrame->MDIGetActive();

        }

    }    
}

更多的资料,可以参考MSDN。

【VS开发】CTabView多页卡界面的更多相关文章

  1. TabLayout和ViewPager简单实现页卡的滑动

    首先需要在当前的module中的build Gradle的 dependencies中加入以下句子 compile 'com.android.support:design:23.0.1' 因为我们用到 ...

  2. 高效开发 Web 单页应用解决方案

    于 2017 年初,有在 Github 建立并维护一个项目:Vue Boilerplate Template,欲成就一款开箱即用 Vue + Webpack 的脚手架模版:其目标与宗旨是:根据以往经验 ...

  3. [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)

    Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...

  4. ViewPager设置 缓存个数、页卡间距、数据更新

    在使用ViewPager常用设置 1)mViewPager.setOffscreenPageLimit(2);//设置缓存view 的个数(实际有3个,缓存2个+正在显示的1个)2)mViewPage ...

  5. android SlidingTabLayout实现ViewPager页卡滑动效果

    先来张效果图(能够滑动切换页卡) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2T/fontsize/400/fi ...

  6. ViewPager实现页卡的3种方法(谷歌组件)

    ----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://sc ...

  7. ViewPager实现页卡的最新方法--简洁的TabLayout(谷歌支持包)

    效果图: 添加依赖包: compile ‘com.android.support:design:‘ 布局文件: <?xml version="1.0" encoding=&q ...

  8. HorizontalScrollView做页卡的一个小记录

    用HorizontalScrollView做页卡,实现一个如下图的效果:

  9. SNF快速开发平台3.0之-界面个性化配置+10种皮肤+7种菜单-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

    一.个性配置-首页:可以进行拖动保存配置,下次登录时就会按配置的进行加载 二.个人配置页面 7种菜单用户可自定义配置,和预览效果 10种皮肤自定义配置,和预览效果 皮肤和菜单可以随意组合-部分截图: ...

随机推荐

  1. Codeforces Round #346 (Div. 2) E题 并查集找环

    E. New Reform Berland has n cities connected by m bidirectional roads. No road connects a city to it ...

  2. POJ2182 Lost Cows 树状数组

    题意:有编号1~n乱序排列的奶牛,给出了每一个奶牛前小于自己编号的奶牛数目 维护一个树状数组,下标是编号,值为$0/1$标识是否存在,很显然最后一个牛的编号是知道的,我们在树状数组上二分出前缀和为小于 ...

  3. Luogu P1450 [HAOI2008]硬币购物 背包+容斥原理

    考虑如果没有个数的限制,那么就是一个完全背包,所以先跑一个完全背包,求出没有个数限制的方案数即可. 因为有个数的限制,所以容斥一下:没有1个超过限制的方案=至少0个超过限制-至少1个超过限制+至少2个 ...

  4. DockerAPI版本不匹配的问题

    1.问题描述 在执行docker指令的时候显示client和server的API版本不匹配,如下: 说明:在这里server API的版本号比client API版本号低,因此不能有效实现cilent ...

  5. 小米oj 帮小学生排队(排序+插入)

     帮小学生排队 序号:#18难度:有挑战时间限制:1000ms内存限制:10M 描述 用一个数组表示一群正在排队的小学生,每个小学生用一对整数 H, K 来表示:H 表示这个小学生的身高,K 表示这个 ...

  6. Appium基础教程

    目录 Appium教程 Appium简介 App自动化测试工具对比 Appium实现原理 环境搭建 Andorid介绍 基本架构 常见布局/视图 基本控件 控件常见属性 Adb介绍 Adb常用命令 A ...

  7. LG2216 理想的正方形

    题意 有一个\(a \times b\)的整数组成的矩阵,现请你从中找出一个\(n \times n\)的正方形区域,使得该区域所有数中的最大值和最小值的差最小 思路 对于每一列,都用两个单调队列维护 ...

  8. MongoDB系列一:MongoDB文档型数据库特点介绍

    一.MongoDB数据库的存储特点: 1.MongoDB是文档型数据库,存储的是文档(将json二进制化为Bson存储): 2.存储的每篇文档都可以有自己独特的存储结构,颠覆了传统数据库必须按照表和列 ...

  9. Linux设备驱动程序 之 重要数据结构

    文件对象 文件对象是进程已经打开文件描述符的内存中的表示,单个文件可能有多个表示打开文件描述符的file结构: struct file { union { struct llist_node fu_l ...

  10. PHP ajax 实现三级联动

    在一个单独JS页面中,利用ajax实现三级联动,做成一个三级联动形式,以便于以后随时调用 JS代码: $(document).ready(function(e) { $("#sanji&qu ...