只是想知道有以下前缀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