Catching the "Enter" key in a CListCtrl (and other controls) 

In order to catch the "Enter" key, and other special keys in a CListCtrl (or any control for that matter) it is necessary to derive your own class and add a handler for the WM_GETDLGCODE message. To allow all special keys to be processed by the control add the following: 

UINT SMUPPGrid::OnGetDlgCode()

UINT result = CListCtrl::OnGetDlgCode();

result = result | DLGC_WANTALLKEYS;

return result;

}

Other options include (from MSDEV documentation): 

DLGC_WANTALLKEYS All keyboard input. 

DLGC_WANTARROWS Arrow keys. 

DLGC_WANTCHARS WM_CHAR messages. 

DLGC_WANTMESSAGE All keyboard input. The application passes this message on to the control. 

DLGC_WANTTAB TAB key. 

DLGC_BUTTON Button (generic). 

DLGC_DEFPUSHBUTTON Default pushbutton. 

DLGC_HASSETSEL EM_SETSEL messages. 

DLGC_UNDEFPUSHBUTTON No default pushbutton processing. (An application can use this flag with DLGC_BUTTON to indicate that it processes button input but relies on the system for default pushbutton processing.) 

DLGC_RADIOBUTTON Radio button. 

DLGC_STATIC Static control. 

This is a relatively simple process but it is not really all that intuitive or well documented. 

Last updated: 9 May 1998