Navigating through CListCtrl's rows with the arrow and tab keys


Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

Environment: Demo was created with Visual C++ 6.0 .

I needed to be able to edit some fields from a database, and wanted to have a label, the field name, followed by an edit box that the user could enter the field data in. The only problem was that there could be anywhere from 1 to 50 fields. So I used a CListCtrl with two columns to represent the field name and the field value. There are many articles here that show how to edit subitems, but I only needed to be able to edit one item on each row, so I just rearranged the columns to have the editable item be the second cloumn. The following code is all that is necessary to rearrange the columns.

int aiCol[2] = { 1, 0 };
m_List.SetColumnOrderArray (2, aiCol);
I also needed the user to be able to navigate through the fields with the tab and arrow keys. This was a pain because the CListCtrl creates its own edit box for editing items, and it was stealing all the key strokes that I wanted. I did not want to have to draw and manage my own edit box, so I just created my own CEdit based class and subclassed the edit box created by the CListCtrl. To subclass the edit control with your own edit control, m_Edit, all you need is:
Inside a message handler for the LVN_BEGINLABELEDIT message, you need to add the following code:

ASSERT (hWnd != NULL);
if (m_Edit.m_hWnd != 0)
	m_Edit.DestroyWindow ();
VERIFY (m_Edit.SubclassWindow (hWnd));
Inside a message handler for the LVN_ENDLABELEDIT message, you need to add the following code:

if (m_Edit.m_hWnd)
	VERIFY (m_Edit.UnsubclassWindow () != NULL);
You can then add a message handler in your m_Edit class to catch the KeyDown event and then begin editing the next item.

The example program is simply a dialog box with an CListCtrl drawn on it. Ten fields are added in the OnInitDialog function to illustrate this functionality.

Download demo - 19 KB

Date Last Updated: April 24, 1999


  • Different Way

    Posted by Legacy on 06/27/2001 12:00am

    Originally posted by: KalliMan

    Do You Know A Different Way To Do That, I Mean, Without

  • Multiple Column?

    Posted by Legacy on 05/21/1999 12:00am

    Originally posted by: Christian

    Do you know how navigate on more that 1 column?
    When i press TAB i want go edit the right item and inverse with Shift-TAB.

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • In order for IT service providers to succeed, it's paramount that they find a competitive advantage and continually develop new ways to find additional revenue streams. IT service providers need to be able to do it all for their clients – from managing entire technology infrastructures to responding quickly to a multitude of end-user needs. With a growing number of issues to resolve and limited technicians at hand, how can IT service providers operate efficiently while providing top-notch service …

  • Milliseconds matter. Make your systems faster with an uncompromising approach to designing and deploying your cloud foundation on IBM Cloud.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date