窗口类包括边框窗口类、视图类、对话框类、控件类、控件栏类和属性簿类,这些类的共同之处是都封装了一个窗口句柄HWND,都是从CWnd派生的。
CWnd类作为所有窗口类的公共基类,包含了大量的成员函数,为窗口类提供了基本操作,这些操作包括:
创建和初始化窗口;
操纵、查询窗口状态;
管理窗口的尽寸、位置、标题、光标、菜单、滚动;
对窗口的坐标进行换算;
管理对话框中的控件;
管理windows消息;
操纵剪切板和OLE控制。
CWnd类的消息响应机制将WndProc函数隐藏起来,windows消息通过消息响应表自动相应的响应函数,CWnd类提供了默认的消息响应函数,在CWnd的派生类重载默认的响应函数来指定当消息发送给窗口时执行我们指定的操作。
当应用程序在windows环境下运行时,用户通过边框窗口与windows进行交互,边框窗口通常包含并管理其他窗口,如视图、工具栏或状态栏等。
CFrameWnd类是边框窗口类的基类,单文档接口(SDI)的边框窗口类直接从CFrameWnd类派生。创建边框窗口可先生成CFameWnd对象,然后直接调用成员函数Create或LoadFrame,也可以利用文档模板来创建边框窗口。
CMDIFrameWnd类和CMDIChileFrameWnd类都是从CFrameWnd类派生的,分别用于支持多文档接口(MDI)的主边框窗口和子窗口。一个MDI主边框窗口包含并一个客户边框窗口(MDIClient window),客户边框窗口负责MDI子窗口的激活、最大化、最小化、恢复和删除,我们可以通过公有数据成员m_hWndMDIClient获取客户边框窗口的句柄。当有子窗口激活时,自动将菜单转换为子窗口的菜单。CSplitterWnd类提供了分割窗口的功能,即一个窗口包含很多个面板,这些面板一般都是视图对象,也可以是其他CWnd类或其派生对象。CSplitterWnd对象一般作为边框窗口CFrameWnd或CMDIChildWnd对象的一个数据成员来使用.CSplitterWnd类不是从CFrameWnd类派生的,而是直接从CWnd类派生。
视图类管理着边框窗口的客户区,为用户与windows之间提供可视接口,用于显示文档的数据,并接收来自用户键盘或鼠标的输入,提供用户与应用程序的交互接口,还允许用户对数据预览和打印。视图一般通过文档模板与文档相关联。
CView类是视图类的基类。通常的应用程序直接从CView类派生自已的视图类。其他的具有特殊功能的视图类是由CView类派生的如下视图提供。
CScrollView类支持可滚动的视图,管理视图的尽寸和映射模式,自动响应滚动条和键盘的滚动消息。
CCtrlView类及其派生类CEditView,CListView,CTreeView和CRichEditView,将文档--视图模型应用到windows95和windows nt 3.51以后版本所支持的通用控件上,使得在视图中使用控件CEdit,CList,CRichEdit的功能。
CFormView类是CScrollView类的派生类,该类支持基于对话框资源的视图。CFormView类还派生了分别用于ODBC数据库、DAO数据库、数据库记录和WebBrowser控件的CRecordView类、CDaoRecordView类、COleDBRecordView类和CHtmlView类。