2016-05-22 70 views
1

我已經使用TVN_SELCHANGED消息來找出用戶在項目樹(菜單)中選擇的內容。MFC)使TreeCtrl失去其項目焦點

但是,如果用戶不斷點擊相同的項目,則不會發生該消息。

我希望treeCtrl失去其出現TVN_SELCHANGED的項目選擇。 (換句話說,即使用戶連續點擊同一個項目,我也想讓事件發生)

我該怎麼做?

+0

當選擇改變時,'TVN_SELCHANGED'被髮布到控件的父級。我無法想象一個場景,當你選擇沒有改變時,你需要得到這個通知。爲什麼你需要得到虛假的'TVN_SELCHANGED'通知,即使沒有發生變化? – IInspectable

+0

這個問題並不能反映你所要求的。 – xMRi

回答

2

TVN_SELCHANGE不會幫忙。沒有任何更改,所以通知不會發送。即使這對我來說也沒有意義。如果用戶點擊已經選擇的項目,用戶界面應該做什麼?沒有...我會猜測。

如果你想處理這個問題,你必須自己做。

  • 您可以使用WM_LBUTTONDOWN或NM_CLICK來跟蹤點擊。
  • 比使用TVM_HITTEST檢查用戶點擊的內容。
  • 現在您可以比較當前選擇(TVM_GETNEXTITEM和檢查TVGN_CARET)
  • 比較新舊選擇。
  • 畢竟,將點擊傳遞給默認處理程序。
+1

或者NM_CLICK而不是WM_LBUTTONDOWN,所以你不必子類化CTreeCtrl –

+0

是的。非常好的評論。 – xMRi