VC中如何获取消息来源控件的IDC

 我来答
Frank7258
推荐于2016-09-18 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:552万
展开全部
你要说清楚是用MFC还是用纯Windows API编程。如果是MFC一般你把一个控件的消息映射成函数那么这个函数被调用的时候必然是这个对应控件的ID号。如果你将多个控件映射到了一个函数,则你可能会希望知道发出消息的控件ID。我想到的做法是调用MFC的全局函数AfxGetCurrentMessage()即可得到当前在处理的一个消息的MSG结构指针。之后的做法和API编程一样。

如果是纯API编程,那么你会在窗口函数得到MSG结构,该结构包含了消息号,消息产生的时间以及消息的两个参数WPARAM和LPARAM。控件的ID就是藏在了WPARAM和LPARAM内。绝大部分控件都是想父窗口发送WM_COMMAND消息的,那么控件的ID就是wParam的低字位。比如你想处理一个按钮单击的消息,这个按钮在单击的时候向父窗口发送WM_COMMAND,然后在wParam的高字位包含BTN_CLICKED,低字位包含IDC_BUTTON1之类的ID号。
你可以用LOWORD(wParam)来获得ID号。

总结一下,MFC下
PMSG pMsg = AfxGetCurrentMessage();
UINT nID = LOWORD(pMsg->wParam);
Windows API就不说了,你会API编程肯定知道如何得到ID号。
追问
具体说一下MFC中“之后”指的是什么吧……麻烦您了,我刚学
追答
PMSG pMsg = AfxGetCurrentMessage();    // 得到你当前正在处理的消息的MSG结构
UINT nID = LOWORD(pMsg->wParam); // 消息wParam参数的低16位为发送消息的控件ID
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paperNote
2011-03-27 · TA获得超过386个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:260万
展开全部
试下使用GetDlgCtrlId函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式