我知道一个按钮,当点击时,发送WM_COMMAND消息给它的父,但它收到什么信息,使它发送此消息?我重写了按钮的默认WndProc,并且该按钮没有收到WM_COMMAND消息,所以我需要知道什么消息导致按钮发送WM_COMMAND消息,以便我可以复制该功能。什么消息导致一个按钮发送一个WM_COMMAND消息
4
A
回答
3
我发现它实际上是WM_LBUTTONDOWN,WM_MOUSELEAVE和其他一些东西的组合。例如,只有鼠标在按钮上被按下时,WM_COMMAND才会被触发,并且当WM_LBUTTONUP被触发时,WM_COMMAND仍然在按钮上。至于空间,输入等,我相信它只是处理VK_ENTER消息和东西。
0
我似乎记得它是WM_LBUTTONUP,但使用间谍程序找出肯定。
+1
什么,当你的信息用空格键点击它?或者回车键?或者用加速键? – 2010-12-20 22:41:04
0
无法覆盖WM_COMMAND
消息,因为WM_LBUTTONDOWN
消息被转换为WM_COMMAND
消息并将其发送给父控件。这是在后台完成的机制。
你问到的空间,进入key.This可以通过虚拟键代码像vk_enter
,vk_tab
控制...等,
0
WM_COMMAND消息总是被控制父节点接收。如果要以编程方式单击按钮,可以执行以下操作:
::SendMessage(button_handle, BM_CLICK, 0, 0);
WM_COMMAND的LPARAM包含button_handle。所以,你可以提取你按钮调用
::GetWindowLongPtr(HWND(lParam), GWL_USERDATA);
您必须已设置此信息前面这样
::SetWindowLongPtr(button_handle, GWL_USERDATA, reinterpret_cast<LONG_PTR>(some_info));
例如some_info可以通过指针按钮包装对象
相关问题
- 1. autorelease并保留导致消息发送到释放的消息
- 2. 向UnityWndClass发送“按钮按下”消息
- 3. 按下按钮时发送消息
- 4. 按下按钮发送消息
- 5. LinkedIn发送消息到一个连接
- 6. 消息只发送第一个字
- 7. 发送一个xml消息到端口
- 8. SmsManager发送消息不止一个
- 9. 创建和发送一个HttpResponse消息
- 10. 发送消息导致出现异常
- 11. 按F10导致WM_SETCURSOR消息
- 12. 只发送一次消息,而不是定期发送消息
- 13. 发送JMS消息导致通过JMS主题发送消息时警告
- 14. Facebook发送一条消息
- 15. 发送按钮错误消息转义
- 16. 预定义消息Facebook发送按钮
- 17. Socket.io发送两个消息
- 18. 如何向Telegram发送消息,其中包含一个提示用户转发消息的按钮?
- 19. 一个简单的查询导致“服务器消失”消息
- 20. 什么是导致此错误消息?
- 21. 按下回车键确认按钮的消息框导致重复消息框
- 22. Slack发送直接消息到SLACK上的所有消息(非群组消息我想发送个人消息
- 23. 在erlang消息上可以发送什么类型的消息?
- 24. 发送消息
- 25. 发送消息
- 26. 发送消息
- 27. 一个消息/条
- 28. 当回车键发送消息到另一个窗口按
- 29. 发送消息从一个演员到另一个演员
- 30. 从一个端口发送消息到另一个端口
你可以调用旧的WndProc作为任何你不明确想要陷阱的消息的按钮。 (从内存中,我认为它是'GetWindowLongPtr(hWnd,GWL_WNDPROC)'来检索它...)这应该让你的新按钮发送正常的WM_COMMAND消息,同时让你挂钩做任何你想要的做。真的不知道这是否对你的情况有好处,虽然... – 2010-12-21 00:22:02
@brone不,它不是,我需要能够分辨按钮是否真正“按下”(根据按钮的规则),除了原WndProc,所以我可以做我自己的东西。在父窗口中捕获WM_COMMAND并不是我所需要的。 – 2010-12-21 00:28:33