- 0
- 0
- 约3.52千字
- 约 7页
- 2026-02-13 发布于北京
- 举报
知识点列表
编号
名称
描述
级别
1
MFC消息处理
在窗口类中实现消息的处理
**
2
MFC消息映射
引入MFC的消息映射机制,简化用户对消息的处理
***
3
MFC消息的分类,以及不同消息映射的实现
根据对消息的处理方式不同将消息分为四类,以及每一类消息的实现过程
***
注:“”理解级别“”掌握级别“***”应用级别
目录
1MFC消息处理
1.1WINDOWS消息机制…..-3-
1.2MFC消息机制
2MFC消息映射
2.1消息映射的添加…..-3-
2.2消息宏的实现…..-4-
2.2.1数据类型
2.2.2代码…..-5-
2.2.3消息宏的实现-代码说明
2.2.4消息映射的处理过程
3MFC消息分类
3.1窗口消息
3.2命令消息
3.3消息
3.4自消息9-
1MFC消息处理
1.1Windows消息机制
应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口
1.2MFC消息机制
使用MFC框架编程时,消息发送和处理的本质仍然是Windows消息机制,MFC简
化了程序员编程时处理消息的复杂性。
2MFC消息映射
MFC消息映射的引入,避免了将消息处理全部放在同一函数中处理,将原来的庞
大的switch-case结构简化为一个消息映射为一个处理函数。
2.1消息映射的添加
在FrameWnd添加消息宏定义
DECLARE_MESSAGE_MAP
添加消息宏实现
EGIN_MESSAGE_MAP(theClass,parentClass)
END_MESSAGE_MAP()
添加消息处理函数
afxmsgLRESULTOnPaint(RAMram,LPARAMlParam);
添加消息和处理函数的对应
ONMESSAGE(WM_PAINT,OnPaint)
练习1用消息映射代替WindowProc实现简单的窗口消息
2.2消息宏的实现
2.2.1数据类型
AFX_MSGMAP_ENTRY结构
用于保存消息ID与对应函数指针及相关的信息
structAFX_MSGMAP_ENTRY{
UINTnMessage;//消息ID
UINTnCode;//代码
UINTnID;//控件的ID
UINTnLastID;//控件的ID范围的最后
UINTnSig;//操作类型或pfn函数类型
AFX_PMSGpfn;//消息处理函数的函数指针
};
AFX_MSGMAP结构
用于保存GetBaseMap的函数地址,AFX_MSGMAP_ENTRY数
组的地址.
structAFX_MSGMAP
{
//函数指针
constAFX_MSGMAP*(PASCAL*pfnGetBaseMap());
//AFX_MSGMAP_ENTRY类型指针
constAFX_MSGMAP_ENTRY*lpEntries;
};
2.2.2代码
在类中添加消息宏的定义代码
classCMsgFrame:publicCMainFrame
{
private:
staticconstFX_MSGMAP_ENTRY_messageEntries[];
protected:
staticAFX_DATAconstAFX_MSGMAPmessageMap;
staticconstAFX_MSGMAP*PASCAL_GetBaseMessageMap();
virtualconstAFX_MSGMAP*GetMessageMap()const;
}
消息宏所对应类的实现代码
classCMsgFrame:publicCMainFrame{private:
staticconstFX_MSGMAP_ENTRY_messageEntries[];protected:
staticAFX_DATAconstAFX_MSGMAPmessageMap;
staticconstAFX_MSGMAP\*PASCALGetBaseMessageMap();virtualconstAFX_MSG
MAP\*GetMessageMap()const;
2.2.3消息宏的实
原创力文档

文档评论(0)