读书人

弱问:消息响应函数必须用那个固定格式

发布时间: 2014-05-28 17:20:50 作者: rapoo

弱问:消息响应函数必须用那个固定格式么?
好像随便写的也可以,不知有何隐含危险,望指教

[解决办法]
#define ON_WM_SIZE() \
{ WM_SIZE, 0, 0, 0, AfxSig_vwii, \
(AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))&OnSize },

MFC消息映射数组中保存了函数的指针和函数类型
其中AfxSig_vwii,第一个v表示void型函数,w表示第一个参数是UINT,i表示参数是int

例子,AfxSig_lwl, // LRESULT (WPARAM, LPARAM)

如果消息映射函数说明只有1个参数,但是你定义3个参数,你访问另外两个不存在的参数将出现不可预知的情况

一般来说只要参数个数符合,不会出问题,但是这是不符合规范的。



[解决办法]
你可以在CWnd的虚函数OnWndMsg中提前处理窗口的所有消息,还有你可以参考CWnd的虚函数OnCmdMsg、OnCommand。

读书人网 >VC/MFC

热点推荐