文档 视图 框架窗口间的关系和消息传送规律

蜜糖点儿

蜜糖点儿

2016-02-19 12:20

下面是个简单易学的文档 视图 框架窗口间的关系和消息传送规律教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

在MFC中M$引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口。(这一结构在MFC中的OLE,ODBC开发时又得到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类。(VC6中支持创建不带文档-视的应用)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

在程序运行时CWinApp将创建一个CFrameWnd框架窗口实例,而框架窗口将创建文档模板,然后有文档模板创建文档实例和视实例,并将两者关联。一般来讲我们只需对文档和视进行操作,框架的各种行为已经被MFC安排好了而不需人为干预,这也是M$设计文档-视结构的本意,让我们将注意力放在完成任务上而从界面编写中解放出来。

在应用中一个视对应一个文档,但一个文档可以包含多个视。一个应用中只用一个框架窗口,对多文档界面来讲可能有多个MDI子窗口。每一个视都是一个子窗口,在单文档界面中父窗口即是框架窗口,在多文档界面中父窗口为MDI子窗口。一个多文档应用中可以包含多个文档模板,一个模板定义了一个文档和一个或多个视之间的对应关系。同一个文档可以属于多个模板,但一个模板中只允许定义一个文档。同样一个视也可以属于多个文档模板。(不知道我说清楚没有)

接下来看看如何在程序中得到各种对象的指针:

全局函数AfxGetApp可以得到CWinApp应用类指针

AfxGetApp()-m_pMainWnd为框架窗口指针

在框架窗口中:CFrameWnd::GetActiveDocument得到当前活动文档指针

在框架窗口中:CFrameWnd::GetActiveView得到当前活动视指针

在视中:CView::GetDocument得到对应的文档指针

在文档中:CDocument::GetFirstViewPosition,CDocument::GetNextView用来遍历所有和文档关联的视。

在文档中:CDocument::GetDocTemplate得到文档模板指针

在多文档界面中:CMDIFrameWnd::MDIGetActive得到当前活动的MDI子窗口

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

一般来讲用户输入消息(如菜单选择,鼠标,键盘等)会先发往视,如果视未处理则会发往框架窗口。所以定义消息映射时定义在视中就可以了,如果一个应用同时拥有多个视而当前活动视没有对消息进行处理则消息会发往框架窗口。

展开更多 50%)
分享

猜你喜欢

文档 视图 框架窗口间的关系和消息传送规律

编程语言 网络编程
文档 视图 框架窗口间的关系和消息传送规律

Html:网页制作基础技巧 框架(帧窗口)间的交互

Web开发
Html:网页制作基础技巧 框架(帧窗口)间的交互

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

word文档使用框架切分文档

电脑应用
word文档使用框架切分文档

制作 MSN、QQ 的消息提示窗口

C语言教程 C语言函数
制作 MSN、QQ 的消息提示窗口

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

adobe dreamweaver教程文档窗口

Dreamweaver 电脑应用
adobe dreamweaver教程文档窗口

解读精液与怀孕间的关系

孕前
解读精液与怀孕间的关系

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

快速判断某个值是否在select中的方法

快速判断某个值是否在select中的方法

Tab Ctrl

Tab Ctrl
下拉加载更多内容 ↓