- 리스트뷰에서 WM_LBUTTONUP 발생하는 경우는???
WM_LBUTTONUP 은 리스트뷰 아이템드래깅이 아니면 발생하지 않고 NM_CLICK 이 발생한다.
만일 아이템드래깅을했을경우 NM_CLICK 은 발생하지않고 WM_LBUTTONUP 이 발생하게 된다.
------------------------
// CListCtrl m_listCtrl 의 OnClick[NM_CLICK] 이벤트 처리 함수 - void CDialog::OnClickListCtrl(NMHDR *pNMHDR, LRESULT *pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- int pos = pNMListView->iItem;
- BOOL bCheck = m_listCtrl.GetCheck(pos);
- if(m_listCtrl.GetCheck(pos))
- {
- if(m_listCtrl.GetItemText(pos, 0) != "")
- {
- m_listCtrl.SetCheck(pos, false);
- }
- }
- else
- {
- m_listCtrl.SetCheck(pos, true);
- }
- *pResult = true; //*pResult = 0; 을 true로 반환
- }
- // 구조체 NMHDR
- typedef struct tagNMHDR
- {
- HWND hwndFrom;
- UINT_PTR idFrom;
- UINT code;
- } NMHDR;
- typedef NMHDR FAR * LPNMHDR;
- // 구조체 NM_LISTVIEW
- typedef struct tagNMLISTVIEW {
- NMHDR hdr;
- int iItem;
- int iSubItem;
- UINT uNewState;
- UINT uOldState;
- UINT uChanged;
- POINT ptAction;
- LPARAM lParam;
- } NMLISTVIEW, FAR* LPNMLISTVIEW;
프로그래밍/Windows API
댓글