MFC多视图共用一文档实现
2013-08-26 01:18
260 查看
项目过程中有定制视图的需求,具体为打开程序默认双视图并且共用一个文档。在网上找了许多类似的资料,都不尽完善。本文直接从达到目的的角度叙述,实现原理不再多说。
1.在自己的App类中定义public变量
然后在App类中 Initlnstance找到RUNTIME_CLASS代码段,在之后加上
其中各类名对应自己的工程中的类名。
2.在App类中重载OnFileNew
首先在头文件中定义afx_msg void OnFileNew();
然后修改消息映射ON_COMMAND(ID_FILE_NEW,OnFileNew)
最后在重载的函数中贴上代码
3.在Doc类中重载OnNewDocument
在Doc类中重载函数afx_msg CFrameWnd* EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
在OnNewDocument中贴上
在MainFrm.cpp末加上
编译完成就达到需求效果了。
1.在自己的App类中定义public变量
CMultiDocTemplate * m_pDocTemplate; CMultiDocTemplate * m_pNewDocTemplate;
然后在App类中 Initlnstance找到RUNTIME_CLASS代码段,在之后加上
m_pNewDocTemplate=new CMultiDocTemplate(IDR_PracTrain_HotelTYPE, RUNTIME_CLASS(CPracTrain_HotelDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CPracTrain_HotelView)); AddDocTemplate(m_pNewDocTemplate);
其中各类名对应自己的工程中的类名。
2.在App类中重载OnFileNew
首先在头文件中定义afx_msg void OnFileNew();
然后修改消息映射ON_COMMAND(ID_FILE_NEW,OnFileNew)
最后在重载的函数中贴上代码
POSITION ps=m_pDocManager->GetFirstDocTemplatePosition(); CDocTemplate *pDocTemplate=m_pDocManager->GetNextDocTemplate(ps); pDocTemplate->OpenDocumentFile(NULL);
3.在Doc类中重载OnNewDocument
在Doc类中重载函数afx_msg CFrameWnd* EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
在OnNewDocument中贴上
CPracTrain_HotelApp*p_app = (CPracTrain_HotelApp*)AfxGetApp(); EkCreateNewWindow(p_app->m_pNewDocTemplate, this );
在MainFrm.cpp末加上
CFrameWnd* CPracTrain_HotelDoc::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; }
编译完成就达到需求效果了。
相关文章推荐
- 通过按钮控件实现MDI新建子窗口(MFC自动生成的视图、文档、子框架共用)
- MFC SDI单文档多视图的实现及自由切换(2种实现方式简析)
- MFC 单文档多视图实现(不是完全原创的,但是也不是直接转的,核心看法原创)
- mfc 实现一分文档对应多个视图
- MFC项目开发之单文档多视图实现
- windows编程 -MFC多文档多视图实现
- MFC项目开发之单文档多视图实现
- MFC学习之路(七)实现多文档的单文档多视图
- MFC单文档多视图的切换的3种实现
- MFC一一单文档下实现多标签视图(继承CTabView类)
- MFC单文档多视图的切换的3种实现
- MFC 单文档工程 实现单文档多视图
- MFC单文档视图穷追猛打
- 深入浅出MFC文档/视图架构之文档(2)
- MFC文档视图中窗口切换 (2012-05-11 18:32:48)
- MFC 文档view视图中根据鼠标指定的某个区域控制延迟显示tip的方法(原创)
- MFC多文档应用程序同时显示两个视图
- MFC单文档图像处理代码--句柄图像实现
- MFC 框架、文档、视图操作常用函数用法简析
- mfc:单文档中对话框类调用视图类和框架类成员变量的实例