可视化:单文档和多文档

单文档:SDI

一个应用程序一次只能打开一个文档,如记事本,一个记事本窗口只能打开一个文档,新建时会覆盖之前的。

多文档:MDI

可打开多个,如word.

对话框、单文档、多文档区别

对话框模板适合于做交互界面
文档模板适合于做文件处理
多文档模板适合于做多文件处理

文档五个重要类:(文档/视图框架)

CWinAPP:应用程序对象,负责初始化程序(进程启动终止),保存视图与文档等对象间的关系,处理消息循环、将消息调度到需要的目标窗口,命令行参数。

CFrameWnd:框架窗口对象,提供一个应用程序主窗口。包含菜单,工具条,最大小化按钮,标题栏,系统菜单,视图的显示及位置等。许多默认为MFC应有的功能都是在该类中实现。

CDocument:存视图空白区数据。通常保存在它的成员变量中。

  • 重要函数:
  1. UpdateAllViews():该函数调用各个视图的OnUpdate()
  2. SetModifiedFlag()

还可由函数GetFirstViewPosition()获得视图指针,对其操作

CView:视图对象。(显示文档类数据)类基类为CWnd,所以它具有CWnd所有功能如创建、移动、显示、隐藏窗口。CView可以接受所有windows消息,而CDocument不行。它实现文档类需要的功能,如可获得指向文档类的指针:GetDocument(),再获取文档类成员变量就获得数据了。

  • 重要函数:
  1. OnDraw():并不显示调用,通常由Invalidate(),updateAllView()等函数调用。

CDocTemplate:将独立的文档、视图、框架对象联系起来,每一种类型文档对应一个文档模板,它管理该类型所有文档。文档、视图、框架对象都由它创建。它实现文档类需要的功能。如建立保存文档,获取文档字符串GetDocString()等。

在应用程序类的InitInstance()中:p284

CSingleDocTemplate *tmp=new CSingleDocTemplate(…)

消息映射

本质上是一个数组,保存:

  • 所处理的消息
  • 消息应用的控件ID
  • 消息传递的参数
  • 返回值

一般用类向导定义,手动添加的话是在BEGIN_MASSAGE_MAP与END_MESSAGE_MAP宏之间添加ON_COMMAND(应用控件ID,CView::OnChange),第二个参数为添加消息映射的类的成员方法。

SDI程序的消息传递过程:

(1)WM_COMMAND消息:按视图、文档、模板、框架窗口、应用程序对象、默认的DefWindowProc传送,一旦一个对象接收了就不会再往后传。

(2)标准windows消息如键盘鼠标消息传给视图,大多其它消息传给框架窗口,文档对象和应用程序对象从不接收非命令消息。

编程实例:

(1)新建基于单文档的MFC项目,命名为SingleDocument。

<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值