右键单击Button

时间:2009-10-27 15:28:58

标签: c++ winapi

我看到按钮控件有BN_CLICKED和BN_DBLCLK通知消息。但是如何为任何按钮控件捕获右键单击消息?

6 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

BN_CLICKED是按钮本身发送到按钮父窗口的通知消息。要截取WM_RBUTTONDOWN等消息,您需要将按钮子类化,因为这些消息是从Windows本身发送到按钮窗口的消息。请参阅Safe Subclassing in Win32

中名为“Instance Subclassing”的部分

答案 2 :(得分:1)

处理WM_CONTEXTMENU。这种过度处理右键鼠标消息的优点是,您的用户可以使用键盘等效键进行右键单击。

答案 3 :(得分:0)

发送了NM_RCLICK,因此请仔细查看Windows消息。

你可以查看恢复BN_CLICKED以查看NM_RCLICK甚至是WM_RBUTTONDOWN

答案 4 :(得分:0)

不是一个真正的答案,但我想你可能能够抓住按钮上的上下文菜单。 (不知道我头顶的事件)。如果您可以按下按钮上的上下文菜单,则它与右键单击相同。

BUTTON下来不是一条好路。只有当用户按下按钮时才会捕获点击。尝试按下按钮,然后在将手指从按钮上移开之前,将鼠标从其上移开..不会记录该按钮的向上行程,也不会记录咔嗒声。

我再次知道这不是一个答案,但它可能是一个线索。我是一个掌上电脑的人,所以我经常没有“鼠标右键”。

答案 5 :(得分:0)

这是一个古老的问题,但就我而言,仍然没有令人满意地回答。我遇到了同样的问题,发现接受的答案根本不起作用 - 所提到的信息在我拿到它们之前被拦截了;我根本无法使用WM_RBUTTONDOWN等等。

因此,提出这个问题的人真的应该知道this solution,其中涉及对按钮进行子类化,处理子类中的鼠标右键消息,使用它们将NM_RCLICK消息发送回父窗口