MDI程序系统框架单文档对应多视图 切换 创建实现过程。

1。原来系统采用了创建多个文档模板,当切换不同的视图显示的时候 ,调用响应的文档模板指针,来生成视图。

切换的时候,首先得到当前的视图,判断是否是要切换的视图,如果不是,则销毁掉该视图,创建新的视图。

存在的问题:系统实际只是一个文档,而系统框架的菜单实际上是一样的,因此虽然在生成文档模板的时候 采用的是同一个菜单,切换视图的,引起菜单的闪烁。因此改为:只创建一个文档模板,切换的时候,动态修改文档对应的视图。

参考文章

(1)http://www.codeproject.com/docview/inplacereplacingview.asp 切换视图

 
<P nd="1">To fully understand what follows, some previous knowledge is required,
namely how MFC creates documents, frame windows and views using document
templates and how their relationship is maintained in the program. A <A
href="http://www.codeproject.com/docview/ReplacingView.asp">previous article</A>
showing how to replace views in non-OLE applications is a recommended
reading.</P>
<P nd="2">First of all, let's understand how the framework creates OLE frames.
When a <A class=iAs
style="FONT-WEIGHT: normal; FONT-SIZE: 100%; PADDING-BOTTOM: 1px; COLOR: darkgreen; BORDER-BOTTOM: darkgreen 0.07em solid; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline"
href="#" target=_blank itxtdid="3675733">server</A> object is inserted in a
container, a document, a frame window and a view contained within it (or
multiple views, if it is a splitter) are first constructed, following common
document-template procedures. After that, in response to the <CODE
nd="3">OLEIVERB_SHOW</CODE> OLE verb, the <CODE
nd="4">COleServerDoc::ActivateInPlace</CODE> function is called. If there is no
previous OLE frame (i.e. it is the first time it will be activated), the OLE
frame is created, calling the <CODE
nd="5">COleServerDoc::CreateInPlaceFrame</CODE> function. Here, not only the OLE
frame is created (using the <CODE nd="6">CDocTemplate::CreateOleFrame</CODE>
function), but also the view in the previously constructed frame window is
"connected" to the newly created OLE frame. If the original frame was a
splitter, then the view in the first pane is used. The "connection" process
consists on changing the view's parent window to the new frame. It is performed
calling the <CODE nd="7">COleServerDoc::ConnectView</CODE> function. The active
view on the original frame window is kept (using the <CODE
nd="8">m_pActiveView</CODE> member), because some controls continue to send
notification messages to their original parent window. These notification
messages should be handled in the original frame window. Once the OLE frame is
created and a view is "connected" to it, then it is activated.</P>
<P nd="9">Now, if we want to replace a view in an OLE frame, we have to replace
it in 2 frame windows: the OLE frame and the original frame. The current active
view should be destroyed, a new view should be created within the original frame
and be later connected to the OLE frame. The active views should be set to <CODE
nd="10">NULL</CODE> first, so no Windows message could be sent by the framework
to a non-va

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC(Microsoft Foundation Class)是微软公司开发的一套基于C++的应用程序框架,用于快速开发Windows平台上的图形用户界面应用程序MFC提供了许多类和函数,可以方便地创建窗口、处理用户输入、绘制图形、响应事件等操作。 MFC文档和多文档MFC应用程序中常用的两种界面布局。文档应用程序通常适用于只需要打开一个窗口,一次只处理一个文档的应用场景。多文档应用程序则可以同时打开多个文档窗口,同时进行多个文档的操作。 在MFC文档应用程序中,通常会有一个主窗口(MainFrame),用户可以在该窗口中显示和操作文档内容。主窗口通常包含菜、工具栏和状态栏等控件,用于提供用户界面和交互操作。当用户打开一个文档时,程序创建一个对应文档窗口(DocumentView),并在主窗口中显示该文档窗口。用户可以在文档窗口中编辑和保存文档内容。 在MFC文档应用程序中,主窗口同样包含菜、工具栏和状态栏等控件,用于提供用户界面和交互操作。当用户打开一个文档时,程序创建一个对应文档窗口,并在主窗口中显示该文档窗口。用户可以同时打开多个文档窗口,分别操作每个文档内容。在多文档应用程序中,通常还提供了选项卡式的标签栏,用于方便用户切换和管理不同文档窗口。 无论是文档还是多文档应用程序MFC提供了一套丰富的类和函数,方便开发者创建和管理窗口、文档视图,并进行用户交互操作。开发者可以根据具体需求选择适合的界面布局方式,实现各种功能丰富的应用程序。 ### 回答2: MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows平台上应用程序开发的C++类库。MFC提供了各种类和函数,可以帮助开发者更加方便地创建Windows应用程序MFC中的文档应用程序是指只有一个主窗口的应用程序。它通常用于简的应用程序,如文本编辑器或画图工具等。在文档应用程序中,用户打开的文件只能在主窗口中进行编辑,并且只能同时打开一个文件。这种应用程序的好处是简易用,用户只需要关注一个窗口和一个文件,操作起来方便快捷。 MFC中的多文档应用程序是指可以同时打开和编辑多个文件的应用程序。多文档应用程序通常用于处理更复杂的任务,如图形设计软件或电子表格应用程序等。在多文档应用程序中,可以同时打开多个文件,并且每个文件都有自己的窗口进行编辑。用户可以方便地在不同的窗口间切换,并且可以同时在多个文件之间进行复制、粘贴等操作。 无论是文档应用程序还是多文档应用程序MFC都提供了一些基础的类和功能,如窗口管理、菜栏、工具栏、对话框等。开发者可以通过继承这些类并重写相应的函数来实现自定义的操作和功能。同时,MFC还提供了丰富的文档视图模型,开发者可以方便地构建应用程序的界面和功能。 总之,MFC文档和多文档应用程序都是用于Windows平台上应用程序开发的两种常见方式。文档适合简的应用程序,而多文档适合处理更复杂的任务。无论选择哪种应用程序类型,MFC都提供了丰富的功能和类,方便开发者进行应用程序的开发和定制。 ### 回答3: MFC(Microsoft Foundation Classes)是一组用于开发Windows操作系统下应用程序的类库,其主要功能是使开发者更容易地构建Windows图形用户界面(GUI)应用程序文档(SDI)和多文档MDI)是MFC中两种常见的应用程序框架文档应用程序是指每个程序窗口对应一个文档视图,例如一个文本编辑器,一个窗口对应一个打开的文本文件。多文档应用程序则是指每个程序窗口可以同时打开多个文档视图,例如一个图形设计工具,可以同时打开多个图形文件。 在MFC中,文档应用程序的构建非常简。首先,我们需要创建一个继承自CWinApp的应用程序类,并在其中进行一些初始化设置和窗口创建的操作。然后,我们需要创建一个继承自CFrameWnd的主窗口类,并将其与应用程序类进行关联。最后,我们需要创建一个继承自CRichEditDoc和一个继承自CView的文档类和视图类,用于处理文档的数据和视图的显示。通过这些类的组合,我们可以轻松地实现一个简文档应用程序。 而多文档应用程序的构建相对复杂一些。除了创建应用程序类和主窗口类之外,我们还需要创建一个继承自CMDIFrameWnd的多文档框架窗口类,并将其与应用程序类进行关联。另外,我们需要创建一个继承自CMDIChildWnd的子窗口类,用于处理每个打开的文档视图。在这种应用程序中,我们可以通过菜或工具栏来打开、关闭或切换文档视图。通过这些类的组合,我们可以构建一个功能丰富的多文档应用程序。 总的来说,MFC中的文档和多文档应用程序框架都提供了方便的开发环境。文档适用于对每个窗口对应一个文档视图的应用程序,多文档适用于对每个窗口可以同时打开多个文档视图的应用程序。开发者可以根据自己的实际需求选择合适的框架,并根据MFC提供的类库快速构建自己的应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值