能否获取消息发送者?

sufon 2004-12-23 03:26:05
比如有10个按钮,各个按钮的消息处理函数类似。想把他放一个消息处理函数里处理,怎么获得发送者以视区别?
...全文
144 点赞 收藏 13
写回复
13 条回复
sufon 2004年12月23日
谢谢各位
回复 点赞
tangshiping 2004年12月23日
else if(.....)
else if(.....)
else if(.....)
......
这样做10个判断了恐怕得,不过我20个的都做过。
http://community.csdn.net/Expert/topic/3452/3452285.xml?temp=.1522333
有详细的步骤说明
回复 点赞
tangshiping 2004年12月23日
if(pMsg->hwnd == GetDlgItem(IDC_......._BUTTON)->m_hWnd)判断是不是你所按下的按纽
回复 点赞
tangshiping 2004年12月23日
响应PreTranslateMessage
if (pMsg->message == WM_LBUTTONDOWN)
{
if(pMsg->hwnd == GetDlgItem(IDC_......._BUTTON)->m_hWnd)
{
....................................
}
else if(.....)
{
..........
}

.................
}
回复 点赞
sufon 2004年12月23日
像ON_BN_CLICKED这样的消息如何获得其wParam,lParam.
回复 点赞
fisker0303 2004年12月23日
这样,只有响应PreTranslateMessage,但感觉还是分开处理好些。
回复 点赞
frank_yufu 2004年12月23日
10个按钮的ID不同,怎么可能会只有一个消息处理函数?
回复 点赞
VCSQLVB 2004年12月23日
BOOL CMyView::OnCommand(WPARAM wParam, LPARAM lParam)
{
CString str;
str.Format("%d",wParam);
AfxMessageBox(str); //显示发送消息的ID号
return CFormView::OnCommand(wParam, lParam);
}
回复 点赞
HunterForPig 2004年12月23日
看看msdn 关于ON_COMMAND_RANGE的说明
ms-help://MS.MSDNQTR.2003FEB.2052/vclib/html/_MFCNOTES_TN006.htm
回复 点赞
老夏Max 2004年12月23日
同意一楼!
wID = LOWORD(wParam); // item, control, or accelerator identifier
获得的就是控件的ID
回复 点赞
zhangqu_980371 2004年12月23日
在消息中带上来源信息最简单。
回复 点赞
flyelf 2004年12月23日
ON_COMMAND_RANGE根据按钮的id来区别
回复 点赞
beyondtkl 2004年12月23日
WM_COMMAND
The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.

WM_COMMAND
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control ***



回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7898

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告