MFC消息ON_WM_CONTEXTMENU和ON_COMMAND_RANGE

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进行处理即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值