捕获 Windows 和控件中的“回车”键






4.33/5 (8投票s)
2000年1月13日

78896
如何处理 WM_GETDLGCODE 消息以捕获特殊按键。
为了捕获“Enter”键以及其他特殊键,在一个 CListCtrl(或者任何控件)中,有必要派生你自己的类并添加一个 WM_GETDLGCODE 消息的处理程序。为了允许所有特殊键都被控件处理,添加以下代码:
UINT SMUPPGrid::OnGetDlgCode()
{ 
	UINT result = CListCtrl::OnGetDlgCode();
	result = result | DLGC_WANTALLKEYS;
	return result;
}
其他选项包括(来自 MSDEV 文档):
- DLGC_WANTALLKEYS:所有键盘输入。
- DLGC_WANTARROWS:箭头键。
- DLGC_WANTCHARS:WM_CHAR 消息。
- DLGC_WANTMESSAGE:所有键盘输入。应用程序将此消息传递给控件。
- DLGC_WANTTAB:TAB 键。
- DLGC_BUTTON:按钮(通用)。
- DLGC_DEFPUSHBUTTON:默认按钮。
- DLGC_HASSETSEL:EM_SETSEL 消息。
- DLGC_UNDEFPUSHBUTTON:没有默认按钮处理。(应用程序可以使用此标志与- DLGC_BUTTON一起指示它处理按钮输入,但依赖于系统进行默认按钮处理。)
- DLGC_RADIOBUTTON:单选按钮。
- DLGC_STATIC:静态控件。
这是一个相对简单的过程,但它并不是那么直观或文档完善。
