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