2009-10-27 173 views
4

我看到BN_CLICKED和BN_DBLCLK通知消息爲按鈕控件。但我怎麼會捕捉任何按鈕控制的右鍵單擊消息?右鍵點擊按鈕

回答

0

NM_RCLICK已發送,因此請仔細查看窗口消息。

您可以檢查reciving BN_CLICKED,看是否NM_RCLICK甚至WM_RBUTTONDOWN

1

BN_CLICKED是按鈕本身發送到按鈕的父窗口的通知消息。要攔截WM_RBUTTONDOWN等消息,您需要繼承按鈕的子類,因爲這些消息是從Windows本身發送到按鈕窗口的消息。請參閱Safe Subclassing in Win32中的名爲「實例子類」的部分

0

不是一個真正的答案,但我認爲您可能能夠捕獲按鈕上的上下文菜單。 (不知道我頭頂的事件)。如果你可以捕捉上下文菜單按下按鈕,那麼它就像右鍵單擊一樣。

BUTTON down不是一條好路徑。只有當用戶按下按鈕時纔會捕獲點擊。嘗試按下按鈕,然後將手指從按鈕上移開,然後將鼠標移開。不會爲該按鈕記錄向上筆畫,也不會點擊。

我再次知道這不是一個答案,但它可能是一個線索。我是一名掌上電腦的人,所以大多數時候我沒有「鼠標右鍵」。

1

手柄WM_CONTEXTMENU。這在處理右鍵鼠標消息方面的優點是您的用戶將能夠使用鍵盤等價物來右鍵單擊。

0

這是一個古老的問題,但就我而言,仍然沒有令人滿意的答案。我面臨同樣的問題,發現接受的答案根本行不通 - 在我能夠接觸到他們之前,所提及的信息被攔截;我根本無法使用WM_RBUTTONDOWN等。

所以來這個問題的人真的應該知道this solution,它涉及子類按鈕,處理子類中的鼠標右鍵消息,使用它們發送NM_RCLICK消息回到父窗口。