一、基本数据结构分析
1、消息处理
typedef struct _MSD
{
UINT uMessage;//消息值
PFNMSG pfnmsg;//消息处理函数
}MSD;//消息分发结构
typef struct _MSDI//消息入口表
{
int cmsd;//MSD数量
MSD *rgmsd;//消息分发表指针
EDWP edwp; //默认消息处理函数
}MSDI,FAR *LPMSDI; //消息分发结构表
做一张表,用一个指针保存MSD结构体数组的数据,就像MFC的消息Map一样。
2、命令消息
typedef struct _CMD
{
WORD wCommand;//命令ID
PFNCMD pfncmd;//命令处理函数列表
}CMD;//command命令
typedef struct _CMDI
{
int ccmd; //需要处理的命令数量
CMD *rgcmd; //命令处理表
EDWP edwp; //默认命名处理
}CMDI , FAR *LPCMDI; //命令分发结构
跟上面是差不多的,也是做一张表
3、函数分析
原WinMain中消息处理函数Proc调用它,把表LPMSDI的指针传过来,其他的照旧,根据uMessage消息类型去找它对应的处理函数;没找到,就调用默认的函数。
这个是处理菜单命令。基本思路是通过wParam、lparam来获取菜单ID值,然后去查询命令表,找到匹配的ID,去调用其消息处理函数。
4、总结
该封装主要是建立一个表,然后遍历,调用相应的处理函数。
参考:1、WIN_sdk编程