• 魔改——MDI多视图模板Tab/标签页 初始化/操作控件


    ==================================声明==================================

    本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。

    未经作者同意请勿修改(包括本声明),保留法律追究的权利。

    未经作者同意请勿用于出版、印刷或学术引用。

    本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

    本文链接:http://www.cnblogs.com/wlsandwho/p/4288818.html

    =======================================================================

    本来这篇不该是魔改,只是简单的对控件进行初始化和操作,但由于是基于前面文章的,所以索性就魔改开头了。

    =======================================================================

    基于前面TestMDIWLS工程

     =======================================================================

    给IDD_FORMVIEW1添加一个CListCtrl控件,ID为IDC_LIST1,关联变量m_ListCtrl。

    在TestMDIWLS.h中声明

    1 extern CView* gView[3];
    2 extern CView* gpDefaultView;
    3 extern CFV1* gpFV1;
    4 extern CFV2* gpFV2;

    在TestMDIWLS.cpp中定义

    CView* gView[3];//
    CView* gpDefaultView=NULL;
    CFV1* gpFV1=NULL;
    CFV2* gpFV2=NULL;

    在CTestMDIWLSApp::OnFileNewWLS中

     1 void CTestMDIWLSApp::OnFileNewWLS()
     2 {
     3     static BOOL bNew=FALSE;
     4 
     5     if (bNew==FALSE)
     6     {
     7         bNew=TRUE;
     8 
     9         CDocTemplate* pTemplate = NULL;  
    10         CDocument* pDoc=NULL;
    11         int nIndex=0;
    12 
    13         POSITION pos = GetFirstDocTemplatePosition();  
    14         while(pos)  
    15         {  
    16             pTemplate = GetNextDocTemplate(pos);  
    17 
    18             ASSERT(pTemplate != NULL);  
    19             ASSERT_KINDOF(CDocTemplate, pTemplate);  
    20 
    21             pDoc=pTemplate->OpenDocumentFile(NULL);    
    22             POSITION posView=pDoc->GetFirstViewPosition();
    23             gView[nIndex++]=pDoc->GetNextView(posView);
    24         }   
    25     }
    26 
    27     //获得视图指针,保存起来,以后可以像theApp一样方便使用。
    28     gpDefaultView=(CTestMDIWLSView*)gView[0];
    29     gpFV1=((CFV1*)gView[1]);
    30     gpFV2=((CFV2*)gView[2]);
    31 
    32     //添加自己的CFormView模板初始化代码
    33     gpFV1->m_ListCtrl.InsertColumn(0,TEXT("WLS"),LVCFMT_LEFT,50);
    34 }

    这样就完成了。

    如图:

    =======================================================================

    PS:

    由于我例子中默认的视图页没有删除,所以一共添加了3个模板。

    其中要注意的是位于位置0的模板,我用的是

    1 CView* gpDefaultView;

    没有使用CTestMDIWLSView*的类型。

    所以如果只是想使用MDI的华丽Tab页(内盛CFormView)来显示数据,不使用序列化的话,还是把默认的模板屏蔽掉吧。

    见随手小代码——C++基础——子类转父类转子类 (派生类转基类转派生类)http://www.cnblogs.com/wlsandwho/p/4288883.html

  • 相关阅读:
    爱因斯坦谜题的真正答案
    Lucence 中的排序算法解析
    XML 解析中,如何排除控制字符
    如何在百度贴吧里加入自己的广告图片
    ASP.NET 不能调试的几种情况
    Zend_Search_Lucence 中用UTF8 编码建立索引的问题
    c++继承中的内存布局 <转>
    Effective C++ 学习笔记(20)
    Effective C++ 学习笔记(19)
    Effective C++ 学习笔记(17)
  • 原文地址:https://www.cnblogs.com/wlsandwho/p/4288818.html
Copyright © 2020-2023  润新知