65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (8投票s)

2000年1月13日

viewsIcon

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:静态控件。

这是一个相对简单的过程,但它并不是那么直观或文档完善。

© . All rights reserved.