在ListView中有三种事件可以触发:
LVN_COLUMNCLICK,HDN_ITEMCLICK,NM_CLICK
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
ON_NOTIFY_REFLECT(HDN_ITEMCLICK, OnItemclick)
ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
不知道有什么区别?
LVN_COLUMNCLICK在单击列表的标题栏才响应。
NM_CLICK都是在单击一个的列表项才响应。
HDN_ITEMCLICK不知道为什么什么反映也没有?他是响应什么事件的?三种事件的响应函数的参数都是一样的。(NMHDR* pNMHDR, LRESULT* pResult)
不知道为什么
三种事件的响应函数为:
void CMDIListViewView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CString s;
s.Format("OnClick 选择%d行,列%d",pNMListView->iItem,pNMListView->iSubItem);
AfxMessageBox(s);
*pResult = 0;
}void CMDIListViewView::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CString s;
s.Format("OnColumnclick 选择列%d",pNMListView->iSubItem);
AfxMessageBox(s);
*pResult = 0;
}void CMDIListViewView::OnItemclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
// TODO: Add your control notification handler code here
AfxMessageBox("OnItemclick");
*pResult = 0;
}