リストコントロール(CListView)上でクリックした位置を検出 (2006.11.22)


void CLstDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) {
    LPNMLISTVIEW lp = (LPNMLISTVIEW)pNMHDR;
    int x=lp->iItem;
    int y=lp->iSubItem;
    CString strItemText=m_imageView.GetItemText(x, y);
    AfxMessageBox(strItemText);
}

m_imageViewはCListControll のメンバ変数。タイプ CListCtrl。
ListView_SubItemHitTestマクロやScreenToClient()は不要です。
これは必要(LVS_EX_FULLROWSELECT)
ListView_SetExtendedListViewStyle((HWND)m_imageView.m_hWnd,LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);