MFC中“App类、Doc类、View类”区别与联系
来源:互联网 发布:perl 数组查找字符串 编辑:程序博客网 时间:2024/06/05 16:33
MFC中App,Doc,MainFrame,View各指针的互相获取,首先说明这四个类的执行顺序是App->Doc->Main->View.
App类就是这个SDI作为”程序”的入口有点像c语言的main()函数
document/view模式
是为了在逻辑上,让数据和显示分开。
一般在document里,定义document类的成员变量,来存数据,并用View来显示.
在document里,当成员变量的数据改变时,你可以用UpdateAllViews()来通知视图更新
在View里,用GetDocument来获取与之对应document的指针,进而可以访问document的成员变量,从而进行显示Document/View仅仅是MFC为你提供的一种很好的支持而已.
view类是在框架类之上,所以如果你需要实现画面显示之类的,就只能在VIEW类中响应.
基本上文档类是用于存储数据管理的类,而视图类是用来显示数据结果的类,他们一般情况下是关联的,
因为他们息息相关,一个存储、一个显示
另外App类和Doc类都是从CCmdTarget类派生而来,所以只能接收命令消息和控件通知消息,View类与Frame
框架类都是从CWnd类派生所以能够接收命令消息和控件通知消息还有windows消息三种消息.对于三种消息,响应的顺序是这样的:
首先由框架类接收到该消息,框架类将该消息递交给其子窗口View,如果View没有对该消息进行
响应,则由View递交给Doc,如果Doc也没有对该消息进行响应,那么它回再次将该消息回交给View,View
再回交给Frame框架,框架检查自己是否对该消息有相应的处理函数,如果没有则递交给
App,如果App也没有则由Windows系统自己处理。
所以另外一个顺序问题.在doc类定义的还是会回交给view类。
参考1:http://blog.sina.com.cn/s/blog_86d10dc701014wdp.html
doc类就是数据存储类,你的文件导入,打开显示,保存都在这个类里面,一个VIEW类对应一个doc,一个doc可以对应多个view类! app其实没什么,它就是创建了一个对象,而这个对象就是你程序实例的本身! View类和mainfram类要注意一下,主要注意他们的客户区窗口的范围,Mainfram指示的是实例的整个框架,而view指示的是工具栏下面的那块区域(假设只有一个VIEW区域)。不知道你明白了没,关于这一段你可以参考孙鑫老师的视频的第三讲,那里面讲的比较详细了!!
参考2:百度知道,链接无效就不放了~
Dlg 是Dialog 的缩写,表示对话框本身
App类就是这个SDI作为”程序”的入口,有点像c的Main函数,它不是从CWND中派生出来的。App表示应用程序本身。
View表示视图类,负责显示数据,提供编辑数据、修改数据的功能。它是指编辑区里面的事就是那块白色的中间区域,负责绘制和响应一些消息
Doc表示文档类,提供对数据的保存和加载。有点像数据库,保存着编辑数据,用于view的Redraw的时候用,还有保存文件。
一般动态的编辑数据都放在Doc里面。他也不是从CWND中派生出来的,没有继承MessageBox函数,可以用AfxMessageBox函数。
- MFC中app、doc、view类区别与联系
- MFC中“App类、Doc类、View类”区别与联系
- MFC中app doc view类区别
- (转)MFC中app doc view类区别
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中获取App,MainFrame,Doc和View类等指针的方法
- MFC中Doc类获取View类的方法
- 总结VC中VIEW类与DOC类,doc,view,frame互相调用
- C++中STL的string类模板与MFC中Cstring类区别与联系
- MFC 中 Doc View Mainframe app 指针相互引用
- 总结VC中VIEW类与DOC类
- 总结VC中VIEW类与DOC类--转
- MFC doc类,view类,frame类之间互相调用
- Revit摆脱基于线的族修改起终点时自动连接功能导致的不必要联动方法
- 解决DB2数据库报 "SQL1032N 未发出启动数据库管理器的命令“错误
- Hibernate学习随笔
- 优化篇-图片浏览
- 注解:认识注解、注解的分类、注解的生命周期、自定义注解及反射调用、为注解添加属性
- MFC中“App类、Doc类、View类”区别与联系
- 对Transactional注解的理解
- Linux
- jdk1.7的新特性
- Qt软件开发文档2---QT构建dll库,并使用dllmanager管理dll库
- 欢迎使用CSDN-markdown编辑器
- Swift 使用CoreLocation获取定位与位置信息
- NYOJ-106 背包问题(贪心)
- 浅谈java定时任务:@Scheduled