NM_CLICK lpnmitem = (LPNMITEMACTIVATE) lParamLVN_COLUMNCLICK Notifies a list view control's parent window that a column was clicked. This notification message is sent in the form of a WM_NOTIFY message.
回复人: kylinux(无知者无畏) (2001-4-4 2:05:00) 得0分 panda_w的方法好!比如可以如下: (mylistdlg.h)afx_msg void OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult);(mylistdlg.cpp)ON_NOTIFY(LVN_ITEMCHANGED, IDC_MY_LIST, OnItemchangedList)void Cmylistdlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0;if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0) return; // No change // Old check box state BOOL bPrevState = (BOOL)(((pNMListView->uOldState & LVIS_STATEIMAGEMASK)>>12)-1); if (bPrevState < 0) // On startup there's no previous state bPrevState = 0; // so assign as false (unchecked)// New check box state BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1); if (bChecked < 0) // On non-checkbox notifications assume false bChecked = 0; if (bPrevState == bChecked) // No change in check box return;// Now bChecked holds the new check box state // ... do your process }
lpnmitem = (LPNMITEMACTIVATE) lParam
lpnmitem = (LPNMITEMACTIVATE) lParamLVN_COLUMNCLICK
Notifies a list view control's parent window that a column was clicked. This notification message is sent in the form of a WM_NOTIFY message.
lpnmitem = (LPNMITEMACTIVATE) lParam 这个怎么判断是checkbox的click呢?能详细点吗?
panda_w的方法好!比如可以如下:
(mylistdlg.h)afx_msg void OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult);(mylistdlg.cpp)ON_NOTIFY(LVN_ITEMCHANGED, IDC_MY_LIST, OnItemchangedList)void Cmylistdlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)
return; // No change // Old check box state
BOOL bPrevState = (BOOL)(((pNMListView->uOldState &
LVIS_STATEIMAGEMASK)>>12)-1); if (bPrevState < 0) // On startup there's no previous state
bPrevState = 0; // so assign as false (unchecked)// New check box state
BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1); if (bChecked < 0) // On non-checkbox notifications assume false
bChecked = 0; if (bPrevState == bChecked) // No change in check box
return;// Now bChecked holds the new check box state
// ... do your process
}