HOWTO: Detect a Mouse Click on Any Column of List View ControlLast reviewed: June 26, 1997Article ID: Q147842 |
The information in this article applies to:
SUMMARYBy design, a left-mouse click on a column other than the first column of a List View control when the control is in report view will not select the first column of that row. This article presents a way to detect the mouse click, and highlight the first column of the row where the mouse was clicked.
MORE INFORMATION
Step-by-Step ProcedureThe List View control will send a NM_CLICK notification code to its parent window whenever the user has clicked the left mouse button within its client area. Below are the necessary steps to intercept this notification code in the control itself (instead of the parent window) and to highlight the first column of the row that is being clicked:
Sample Code
void CMyListCtrl::OnClick(NMHDR* pNMHDR, LRESULT* pResult) { // Get the current mouse location and convert it to client // coordinates. DWORD pos = GetMessagePos(); CPoint pt(LOWORD(pos), HIWORD(pos)); ScreenToClient(&pt); // Get indexes of the first and last visible items in listview // control. int index = GetTopIndex(); int last_visible_index = index + GetCountPerPage(); if (last_visible_index > GetItemCount()) last_visible_index = GetItemCount(); // Loop until number visible items has been reached. while (index <= last_visible_index) { // Get the bounding rectangle of an item. If the mouse // location is within the bounding rectangle of the item, // you know you have found the item that was being clicked. CRect r; GetItemRect(index, &r, LVIR_BOUNDS); if (r.PtInRect(pt)) { UINT flag = LVIS_SELECTED | LVIS_FOCUSED; SetItemState(index, flag, flag); break; } // Get the next item in listview control. index++; } *pResult = 0; } REFERENCESBy design, a List View control in a report view will only highlight the first column of a row. To select an entire row, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q131788 TITLE : SAMPLE: Highlighting an Entire Row in a ListView Control |
Additional query words: CListView
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |