深入浅出mfc(深入浅出MFC-侯俊杰「建议收藏」)

发布时间:2025-12-10 19:30:57 浏览次数:16

深入浅出MFC-侯俊杰「建议收藏」-深入浅出mfc第五版pdf下载

深入浅出MFC-侯俊杰「建议收藏」  MFC六大特点■MFC程序的初始化过程■RTTI(RuntimeTypeInformation)执行时期型别信息DECLARE_DYNAMIC structCRuntimeClass{//Attributes   LPCSTRm_lpszClassName;   intm_nObjectSize;   UINTm_wSchema;//s…

MFC六大特点

■ MFC 程序的初始化过程

■ RTTI(Runtime Type Information)执行时期型别信息

DECLARE_DYNAMIC

struct CRuntimeClass
{

// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
#ifdef _AFXDLL
CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
#else
CRuntimeClass* m_pBaseClass;
#endif

// Operations
CObject* CreateObject();
BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

// dynamic name lookup and creation
static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);
static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);

// Implementation
void Store(CArchive& ar) const;
static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);

// CRuntimeClass objects linked together in simple list
CRuntimeClass* m_pNextClass; // linked list of registered classes
const AFX_CLASSINIT* m_pClassInit;
};

■ Dynamic Creation 动态生成

DECLARE_DYNCREATE

■ Persistence 永续留存

■ Message Mapping 消息映射

消息映射表作法,把消息和其处理例程关联起来,将消息与表格中的元素比对,然后
调用对应的处理例程,这种动作我们也称之为消息映射(Message Mapping)。

注意:CWinThread 并不属于消息流动网的一份,父类消息映射表填CCmdTarget

■ Message Routing 消息绕行

3. MFC的生死因果

注意:应用程序一定要改写虚拟函数InitInstance,因为它在CWinApp 中只是个空函数,
没有任何内建(预设)动作 ;

CFrameWnd::Create 在产生窗口之前,会先引发窗口类别的注册动作

请注意,如果类别的成员函数是一个callback 函数, 你必须声明它为”static”,才能把
C++ 编译器加诸于函数的一个隐藏参数this 去掉(请看方块批注)。

Application framework classes

这一部份最为人认知的便是Document/View,这也是使MFC 跻身application framework 的关键。Document/View 的观念是希望把资料的本体,和资料的显像分开处理。由于文 件产生之际,必须动态生成Document/View/Frame 三种对象,所以又必须有所谓的 Document Template 管理之。

■ CDocTemplate、CSingleDocTemplate、CMultiDocTemplate – Document Template 扮演 黏胶的角色,把Document 和View 和其Frame(外框窗口)胶黏在一块儿。

■ CSingleDocTemplate 一次只支持一种文件类型,CMultiDocTemplate 可同时支持多 种文件类型。注意,这和MDI 程序或SDI 程序无关,换句话说,MDI 程序 也可以使用CSingleDocTemplate,SDI 程序也可以使用CMultiDocTemplate。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477