只是想知道有以下前綴MFC控制消息之間的區別是:MFC事件處理程序
LVN (e.g. LVN_ITEMCHANGED)
HDN (e.g. HDN_TRACK)
NM (e.g. NM_HOVER)
另外,我使用的是列表控件和誘捕當使用NM_CLICK消息的項目的用戶點擊。我還想要在用戶選擇一個新項目時查看一個鍵,例如上/下箭頭鍵。任何人都可以告訴我,我應該陷入這個消息嗎?
感謝
只是想知道有以下前綴MFC控制消息之間的區別是:MFC事件處理程序
LVN (e.g. LVN_ITEMCHANGED)
HDN (e.g. HDN_TRACK)
NM (e.g. NM_HOVER)
另外,我使用的是列表控件和誘捕當使用NM_CLICK消息的項目的用戶點擊。我還想要在用戶選擇一個新項目時查看一個鍵,例如上/下箭頭鍵。任何人都可以告訴我,我應該陷入這個消息嗎?
感謝
對於選擇的變化,你需要處理LVN_ITEMCHANGED通知:
NMLISTVIEW & nm = *(NMLISTVIEW *) pnmh;
if ( (nm.uNewState^nm.uOldState) & LVIS_SELECTED)
{
// nm.iItem was selected or deselected
if (!m_internalUIChange)
{
// see below
}
}
第一個「如果」檢查是否「選定」狀態已更改。請注意,在列表中選擇不同的項目時,它仍會激發兩次:一次爲舊項目取消選擇,一次爲新項目選擇。然而,這是必要的,以獲取「完全取消選擇」。
此通知會經常觸發 - 即使以編程方式修改控件也是如此。如果你的處理程序只對用戶事件作出反應,至少需要一個你設置的標誌來使這些操作變得複雜(我使用一個RAII-Lock類,所以我不會忘記重置它)
NM_是非控制類型特定的通用控制通知。我通常將其解析爲「通知消息」。 – peterchen 2008-11-03 15:53:30
夢幻般的答案 - 謝謝! :) – Konrad 2008-11-03 17:02:31