CView_VS_CDocument

CView与CDocument
这是面试的时候,考官问我的问题之一。具体问题忘记了。
最近看到一个人写的MFC的一些bolg,突然想起来这个问题了,就稍微总结一下,浅显之处,还请见谅。
第一点,从类的继承关系上,CView继承自CWnd,CWnd继承自CCmdTarget;CDocument继承自CCmdTarget。
第二点:
CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。
CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入)、OnSaveDoucument(写盘)和Serialize(读写)。


只是一点浅显的摘抄,其中不完整之处,还请高手指正。


ps:

CCmdTarget

   |

   |----CWinThread---CWinApp---CMyWinApp

   |

   |----CWnd----

   |           |----CView

   |           |----CFrameWnd

   |

   |----CDocument----CmyDoc



以下为转载内容:来源:http://hi.baidu.com/fwxh101/blog/item/4344028bd58989a80e24441b.html。

    CWnd 窗口类,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图类CView、框架窗口类CFrameWnd、工具条类CToolBar、对话框类CDialog、按钮类CButton等。一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。 

    CDocument 文档类,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)。

    CView 视图类,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。

    CDC 设备文本类。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。

    DC常被称为设备上下文(Device Context),或设备环境。它是一个超大的类或函数的集合。它集合了所有的绘图、打印等相关的类及函数。你只要声明了它的对象或指针,你就得到了它的所有类及函数的使用权。象画笔、画刷、位图、绘图函数....等等全部的功能。你只要用“dc.”,“this->”或“pDC->”等方式就可以直接调用它的函数了。

    类CClientDC派生于CDC,在构造时调用了Windows函数GetDC,在析构时调用了ReleaseDC。这意味着和CClientDC对象相关的设备上下文是窗口的客户区。

    在Windows应用程序中,设备环境与图形对象(CGdiObject)共同工作,协同完成绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画笔。用画笔在画布上绘画,不同的画笔将画出不同的画来。选择合适的图形对象和绘图对象,才能按照要求完成绘图任务。


    CDialog 对话框类。

    CWinApp 应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。最常用函数InitInstance() 初始化。

    CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。

CPen 笔,画线

CBrush 刷子,填充

CFont 字体,控制文字输出的字体

CBitmap 位图

CPalette 调色板

CRgn 区域,指定一块区域可以用于做特殊处理。 

CFile 文件。最重要的不外是Open(打开),Read(读入),Write(写)

CString 字符串。封装了C中的字符数组,非常实用。

CPoint 点,就是(x, y)对。

CRect 矩形,就是(left, top, right, bottom)。

CSize 大小,就是(cx, cy)对(宽、高)。

    Windows使用与设备无关的图形设备环境(DC: Device Context) 进行显示。MFC基础类库定义了设备环境对象类----CDC类。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值