【交互】MFC单文档多视图实例分析

本文分析了MFC中多文档App的工作原理,详细解释了SDI单文档多视图的实现过程,包括如何创建CChildFrame和CView,以及如何在CMainFrame中添加不同的视图。在多视图切换中,关键在于正确管理和更新ActiveDocument。通过理解MFC的内部机制,如WM_MDICREATE消息和CLIENTCREATESTRUCT,可以有效地实现场景的自由切换。
摘要由CSDN通过智能技术生成

一、基本原理

        对于多文档App而言,首先是创建CMainFrame窗口和它的子窗口MDIClient。当新建一个文档,则会new CDocument,顺便创建CChildFrame和它的子窗口CView,再次新建时,会建立另一个文档,创建另外一个CChildFrame和它的子窗口CView。对于不同视图,CView的ID标识是AFX_IDW_PANE_FIRST。在本次CChildFrame新建另外的CView时,ID标识要改变,以免重复。

        向MDIClient发送WM_MDICREATE创建CChildFrame时,内部会分配子窗口的ID值,另外MDIClient在CManiFrame::OnCreate中调用到CMDIFrameWnd中的一个函数,里面创建时,Menu ID标识也是AFX_IDW_PANE_FIRST,但是MDIClient的创建 CLIENTCREATESTRUCT ccs的里面,可以指定子窗口id标识ccs.id,即子窗口CChildFrame的id标识从这个数字开始编号AFX_IDM_FIRST_MDICHILD。

        若要获取激活窗口,则向MDIClient发送WM_GETACTIVATE消息,每个激活的CChildFrame父类CFrameWnd保存一个 CView* m_pViewActive,也就是CChildFrame会有一个主视图。

二、SDI单文档多视图的实现及自由切换【1、2】
        主要是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值