【MFC编程(一)】MFC概述-MFC类库

MSDN 手册
MFC类库
Classes declared in <afx.h>

/*============================================================================*/
// Classes declared in <afx.h>

struct CRuntimeClass;          // object type information

class CObject;                        // the root of all objects classes

	class CException;                 // the root of all exceptions
		class CArchiveException;      // archive exception
		class CFileException;         // file exception
		class CSimpleException;
			class CMemoryException;       // out-of-memory exception
			class CNotSupportedException; // feature not supported exception
			class CInvalidArgException;	  // one of the parameters to the function is invalid

	class CFile;                      // raw binary file
		class CStdioFile;             // buffered stdio text/binary file
		class CMemFile;               // memory based file

// Non CObject classes
struct CFileStatus;                   // file status information
struct CMemoryState;                  // diagnostic memory support

class CArchive;                       // object persistence tool
class CDumpContext;                   // object diagnostic dumping

/*============================================================================*/

Classes declared in <afxwin.h>

/*============================================================================*/
// Classes declared in <afxwin.h>

//CObject
	//CException
		//CSimpleException
			class CResourceException;// Win resource failure exception
			class CUserException;    // Message Box alert and stop operation

	class CGdiObject;            // CDC drawing tool
		class CPen;              // a pen / HPEN wrapper
		class CBrush;            // a brush / HBRUSH wrapper
		class CFont;             // a font / HFONT wrapper
		class CBitmap;           // a bitmap / HBITMAP wrapper
		class CPalette;          // a palette / HPALLETE wrapper
		class CRgn;              // a region / HRGN wrapper

	class CDC;                   // a Display Context / HDC wrapper
		class CClientDC;         // CDC for client of window
		class CWindowDC;         // CDC for entire window
		class CPaintDC;          // embeddable BeginPaint struct helper

	class CImageList;            // an image list / HIMAGELIST wrapper

	class CMenu;                 // a menu / HMENU wrapper

	class CCmdTarget;            // a target for user commands
		class CWnd;                 // a window / HWND wrapper
			class CDialog;          // a dialog

			// standard windows controls
			class CStatic;          // Static control
			class CButton;          // Button control
			class CListBox;         // ListBox control
				class CCheckListBox;// special listbox with checks
			class CComboBox;        // ComboBox control
			class CEdit;            // Edit control
			class CScrollBar;       // ScrollBar control

			class CMFCPreviewCtrlImpl; // helper window for DLL implementation of Rich Preview

			// frame windows
			class CFrameWnd;        // standard SDI frame
				class CMDIFrameWnd; // standard MDI frame
				class CMDIChildWnd; // standard MDI child
				class CMiniFrameWnd;// half-height caption frame wnd

			// views on a document
			class CView;            // a view on a document
				class CScrollView;  // a scrolling view

		class CWinThread;           // thread base class
			class CWinApp;          // application base class

		class CDocTemplate;         // template for document creation
			class CSingleDocTemplate;// SDI support
			class CMultiDocTemplate; // MDI support

		class CDocument;            // main document abstraction
		class CMFCFilterChunkValueImpl; // search/organize/preview/thumbnail support - filter chunk value implementation


// Helper classes
class CCmdUI;           // Menu/button enabling
class CDataExchange;    // Data exchange and validation context
class CCommandLineInfo; // CommandLine parsing helper
class CDocManager;      // CDocTemplate manager object

struct COleControlSiteOrWnd; // ActiveX dialog control helper


class CControlCreationInfo; //Used in CWnd::CreateControl overloads.

class CVariantBoolConverter;
class CMFCDynamicLayout;

/*============================================================================*/

基类CObject

CObject类是大多数MFC类的最终基类,它们都继承了CObject类的三个主要特征:
(1)在运行时识别对象所属的类
(2)支持串行化,把对象存入文件中及从文件中读取对象
(3)在运行时打印诊断信息
每个从CObject类派生的类还有一个相关的CRuntimeClass结构,可以在运行时获取对象的信息。通过对RUNTIME_CLASS宏的调用可获得与指定类对应的CRuntimeClass结构。

用户也可以直接从CObject类派生自已的类以获得这些特性。为此,应遵循以下步骤:
(1) 在类声明中包含宏DECLARE_SERIAL;
(2) 为类提供一个默认的构造函数,这是一个无参数的构造函数。
(3) 在用来定义类成员函数的C++源文件中,包含宏IMPLEMENT_SERIAL。
(4) 重载成员函数Serialize()。

命令发送类CCmdTarget

命令发送类CCmdTarget封装了用户通过选择菜单或工具栏按钮向应用程序发送命令的界面。封装了MFC消息映射机制,支持命令和消息的自动发送,保证命令和消息正确发送到目的地。
命令发送类CCmdTarget从CObject类派生,是应用程序结构类和窗口类的基类。但CCmdTarget类在应用程序中很少直接使用。

CCmdUI类是一个与CCmdTarget类相关的有特殊用途的支持类,它封装了用于更新用户接口对象(如菜单项和工具栏按钮)的可编程界面,用在CCmdTarget类派生类的ON_UPDATE_COMMAND_UI控制函数中,该类没有任何基类。

应用程序结构类

应用程序结构类(Application Architecture Class)提供了应用程序的几乎所有通用功能,它们构成了windows应用程序的主要框架。我们通过这些类的派生类,添加新成员函数或重载现有成员函数以实现需要的功能,从而构造应用程序框架。

应用程序线程支持类CWinThread/CWinApp

MFC支持多线程。所有的应用程序至少有一个线程,这个线程由CWinApp类的对象使用,被称为主线程。每个应用程序有且只有一个CWinApp类或其派生类的全局对象,它在程序运行中协调基他对象的动作。

CWinThread类是所有线程类的基类,封装了操作应用程序的多线程功能。CWinThread类是多线程应用程序的线程类的直接基类。

CWinAppCWinThread类的派生类,封装了基于MFC的windows应用程序的初始化、运行及终止等功能。CWinApp的全局对象控制着整个应用程序的流程。

CWinApp类取代了WinMain()主函数在SDK应用程序中的地位。传统SDK应用程序WinMain()函数完成的工作。现在由类CWinApp的InitApplication(),InitInstance()和Run()三个成员函数承担。

文档类CDocument

文档类封装了应用程序的数据管理,文档类对象由由文档模板创建。

CDocument 类是文档类的基类,用户应用程序文档类可从CDocument类直接派生。CDocument类支持一些标准操作,如:新建文档,打开文档、和存储文档等。

文档模板类CDocTemplate

文档模板类将文档、视图及边框窗口相互联系起来,在创建新文档或视图时协调文档、视图及边框窗口的创建。

  • CDocTemplate类是一个抽象基类,它为文档模板封装了基本功能,用户不能直接使用该类。
  • CMultiDocTemplate为多文档接口(MDI)提供了模板。
  • CSingleDocTemplate为单文档接口(SDI)提供模板。应用程序结构类还包括其他一些主要与OLE有关的类。

窗口类

窗口类包括边框窗口类、视图类、对话框类、控件类、控件栏类和属性簿类,这些类的共同之处是都封装了一个窗口句柄HWND,都是从CWnd派生的。

窗口基类CWnd

CWnd类作为所有窗口类的公共基类,包含了大量的成员函数,为窗口类提供了基本操作,这些操作包括:

  • 创建和初始化窗口;
  • 操纵、查询窗口状态;
  • 管理窗口的尽寸、位置、标题、光标、菜单、滚动;
  • 对窗口的坐标进行换算;
  • 管理对话框中的控件;
  • 管理windows消息;
  • 操纵剪切板和OLE控制。

CWnd类的消息响应机制将WndProc函数隐藏起来,windows消息通过消息响应表自动相应的响应函数,CWnd类提供了默认的消息响应函数,在CWnd的派生类重载默认的响应函数来指定当消息发送给窗口时执行我们指定的操作。

边框窗口类CFrameWnd

当应用程序在windows环境下运行时,用户通过边框窗口与windows进行交互,边框窗口通常包含并管理其他窗口,如视图、工具栏或状态栏等。

它取代了SDK应用程序中窗口函数WndProc()的地位。CFrameWnd类的对象是一个框架窗口,包括边框、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。

CFrameWnd类是边框窗口类的基类,单文档接口(SDI)的边框窗口类直接从CFrameWnd类派生。创建边框窗口可先生成CFameWnd对象,然后直接调用成员函数Create或LoadFrame,也可以利用文档模板来创建边框窗口。

CMDIFrameWnd类和CMDIChileFrameWnd类都是从CFrameWnd类派生的,分别用于支持多文档接口(MDI)的主边框窗口和子窗口。一个MDI主边框窗口包含并一个客户边框窗口(MDIClient window),客户边框窗口负责MDI子窗口的激活、最大化、最小化、恢复和删除,我们可以通过公有数据成员m_hWndMDIClient获取客户边框窗口的句柄。当有子窗口激活时,自动将菜单转换为子窗口的菜单。

CSplitterWnd类提供了分割窗口的功能,即一个窗口包含很多个面板,这些面板一般都是视图对象,也可以是其他CWnd类或其派生对象。CSplitterWnd对象一般作为边框窗口CFrameWnd或CMDIChildWnd对象的一个数据成员来使用.

CSplitterWnd类不是从CFrameWnd类派生的,而是直接从CWnd类派生。

视图类CView

视图类管理着边框窗口的客户区,为用户与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类。

上一篇:NestJS 项目中如何使用 class-validator 进行数据验证-实战使用技巧


下一篇:Java 基于SpringBoot+Vue 的公交智能化系统,附源码、文档