ON_WM_CONTEXTMENU消息说明:用户右键窗口时调用
此消息在右键单击窗口时调用,此消息的宏
#define ON_WM_CONTEXTMENU() \
{ WM_CONTEXTMENU, 0, 0, 0, AfxSig_vWp, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< void (AFX_MSG_CALL CWnd::*)(CWnd*, CPoint) > ( &ThisClass :: OnContextMenu)) },
从结构中可以看出,此消息实际的对应的函数名为OnContextMenu参数CWnd*, CPoint一个为一个窗体的句柄,一个为坐标。
从网上资料得知,窗体可以为任意一个windows窗体,实际测试得到的结果是:接收消息所对应的当前窗体中的窗体(或控件),CPoint即接收到此消息时的鼠标坐标。
此时可以做很多事,比如,右键单击到一个控件时,弹出一个菜单。
ON_COMMAND_RANGE消息用于响应菜单或工具栏的事件
#define ON_COMMAND_RANGE(id, idLast, memberFxn) \
{ WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSigCmd_RANGE, \
(AFX_PMSG) \
(static_cast< void (AFX_MSG_CALL CCmdTarget::*)(UINT) > \
(memberFxn)) },
查看构造原型,可知此宏的参数为(UINT),查阅相关文档后得知,此参数为消息ID.
id 和 idLast 分别为起始ID,
此消息的具体功能为将一连串的消息在此一个函数中处理,而不必为每个事件写一个函数,事件之间的区分,只需要通过ID来区分即可。
id需要定义为连续id。
在函数中区分ID进行处理即可。