引子
MFC是windows一个成熟的应用程序开发框架,虽然目前微软主推.net了,但作为一个有十多年历史且已经非常成熟的框架来说,MFC还是有很多值得我们参考和学习的地方,作为一个MFC的初学者,在这里将学习的心得记录下来。
MFC总揽
MFC的基础是什么,当然是C++。MFC对windows的面向过程(基于消息,面向API)的编程方式进行封装——使用C++面向对象技术进行的封装。windows API很多,“MFC使用抽象、封装、继承、多态性和模块化的面向对象原则,逻辑上将windows API进行分类”。
MFC的组成
MFC的组成大概可以划分为四个方面:
1.通用类
CObjcet是几乎所有类的超类。该类包含一些运行时类型标识,序列化,诊断函数和对动态对象创建(删除)的支持。
异常处理类。
内存诊断类。
集合类。在MFC提出的年代,STL还不成熟,不过现在可以你可选用STL了。
动态字符串CString,没说的,很好用个,不过要注意些一些关键的地方。
文件类。CFile二进制文件, CMemFile内存文件,CStdioFile文本文件。
时间相关。CTime, CTimeSpan。
混合类,如CRect, CSize,CPoint。
2.Windows API相关类。 这里封装了绝大多数windows API和windows对象。
应用程序:CCmdTarget, CCmdUI, CWinThread, CWinApp
同步对象
Util类,CCommnadLineInfo, CWaitCursor
窗口类。CWnd是所有窗口类的基类。这就派生了单文档框架,多文档框架和对话框以及相应的一些控件。
控件,有些控件是从CWnd继承来的,如CButton。当然有些控件也不是从CWnd继承来的,比如CAnimateCtrl,CDragListBox,CHeaderCtrl,CHotKeyCtrl,CListCtrl,CRichEditCtrl.....
Menu
DDE动态数据交换支持类。DDX、DDV支持。
GDI支持。
3.应用程序框架。MFC支持doc-view架构,这实际上是一种MVC的应用方式,将数据和数据的表示想分离。
CDocTemplate, CSingleDocTemplate,CMultiDocTemplate。这些将doc和view连接起来,是MFC中doc,view和框架窗口的连接点。
CDocument,模型数据
CView,视图基类。
更高层次的抽象,CView的扩展如CScrollView,CEditView,CRichEditView;分割窗;控制栏,包括工具栏,状态栏和对话框。
4.操作系统扩展。
OLE支持,包括复合文档,自动化,ActiveX控件,统一数据传输
ODBC、DAO
WinSock
手写编辑控件,Pen Windows。