`
wgq837051
  • 浏览: 86059 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MFC多文档程序启动时一个文档创建两个视图

MFC 
阅读更多

1.在App类中创建两个public变量:

CMultiDocTemplate * m_pDocTemplate;

CMultiDocTemplate * m_pNewDocTemplate;

2.在App类中的Initlnstance()函数中添加以后程序:

m_pDocTemplate = new CMultiDocTemplate(
  IDR_MULTIDTYPE,
  RUNTIME_CLASS(CMultiDocumentStudyDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CMultiDocumentStudyView));
 AddDocTemplate(m_pDocTemplate);

 //CMultiDocTemplate * pNewDocTemplate;
 m_pNewDocTemplate = new CMultiDocTemplate(
  IDR_MULTIDTYPE,
  RUNTIME_CLASS(CMultiDocumentStudyDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CNewView));
 AddDocTemplate(m_pNewDocTemplate);
3.重载OnFileNew函数(App类中),默认只打开一个视图:

m_pDocTemplate->OpenDocumentFile(NULL);

4.在Doc类中重载OnNewDocument()函数

 CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
 EkCreateNewWindow(p_app->m_pNewDocTemplate, this ); 

 

CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
{
 ASSERT_VALID( pTemplate );  
    ASSERT_VALID( pDocument );  
    CFrameWnd* pFrame =   
  pTemplate->CreateNewFrame(pDocument, NULL );
 CRect rect;
 GetClientRect(pFrame->m_hWnd,&rect);
 pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
    if( pFrame == NULL )  
    {TRACE0( "Warning: failed to create new frame.\n" );  
    return NULL;  
    }  
    ASSERT_KINDOF( CFrameWnd, pFrame );  
    pTemplate->InitialUpdateFrame( pFrame, pDocument );  
 
    return pFrame;  

}

分享到:
评论

相关推荐

    MFC的程序框架剖析

    创建框架类和视图类,从这里也可以看出MFC体系结构中文档、框架、视图“三位一体”的模式,在这一个函数中同时创建三个类;再会调用pDocument->OnNewDocument();因此就会进入到子类的文档类中的pDocument->...

    吕鑫:《VC++就业培训宝典之MFC视频教程》第十二章 第一节 框架程序开发介绍

    1、MFC程序架构:主要分为对话框与框架界面两种程序架构; 2、框架界面主要由框架(Frame)和视图(View)两部分...3、通过一个简单的框架(列表)视图程序,演示框架程序的启动原理,以及框架与视图窗口的创建方法;

    用户模态对话框内子视图(子窗口)的预览和打印

    在调用A视图的CView::OnFilePrintPreview之前,先关闭用户对话框(CDialog::OnCancel),由于这时已不存在用于预览的A视图,再重新创建一个相同的视图(以下简称B视图),以B视图来启动OnFilePrintPreview进行预览。...

    MFC 实例 教程 02

    应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用程序屏幕 86 5.6 例6 处理...例10 终止应用程序 100 5.11 例11 创建一个启动窗口 101 第6章...

    vc++ 应用源码包_1

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    Visual C++ 2005入门经典--源代码及课后练习答案

    1.6.6 创建和执行Windows应用程序 24 1.6.7 创建Windows Forms应用程序 26 1.7 小结 29 第2章 数据、变量和计算 31 2.1 C++程序结构 31 2.1.1 程序注释 36 2.1.2 #include指令——头文件 37 2.1.3 ...

    vc++ 应用源码包_2

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    vc++ 应用源码包_6

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    vc++ 应用源码包_5

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    vc++ 应用源码包_3

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    vc++ 开发实例源码包

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 FreeBird2011Dlg.h 主对话框类头文件 MultiGroup.h 多播组类头文件 UserLink.h 用户链表类头文件 ListenSocket.h 侦听接口...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素  ·举例说明如何使用mfc开发本地windows应用程序  ·指导读者用c++和c++/cli设计和创建大量的windows应用程序 ...

Global site tag (gtag.js) - Google Analytics