如何在对话框中响应键盘按键

原创 2001年01月14日 21:50:00
我们首先想到的是响应WM_KEYDOWN消息,但实际运行却发现没有任何效果。
原因是对话框里的控件需要首先对按键作出响应,比如多行编辑框必须首先
处理回车,不至于回车使对话框关闭。
我们要想在第一时间对对话框的按键做出响应,需要重载PreTranslateMessage,
以下的代码实现了在对话框中显示虚拟键值(virtual-key code)
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
///或者直接调用OnKeyDown
CString strwParam;
strwParam.Format("%d ",pMsg->wParam);
CDC* pDC = GetDC();
pDC->TextOut(10,10,strwParam);
ReleaseDC(pDC);
}
return CDialog::PreTranslateMessage(pMsg);
}

此方法也适用于FORMVIEW或其它控件中对键盘按键的响应,以下的代码来自MSDN,
实现了当按下上下左右方向键时调用OnKeyDown,我们可以在OnKeyDown中作相应处理。

BOOL CSampleControl::PreTranslateMessage(LPMSG lpmsg)
{
BOOL bHandleNow = FALSE;
switch (lpmsg->message)
{
case WM_KEYDOWN:
switch (lpmsg->wParam)
{
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
bHandleNow = TRUE;
break;
}
if (bHandleNow)
OnKeyDown(lpmsg->wParam, LOWORD(lpmsg ->lParam), HIWORD(lpmsg->lParam));
break;
}
return bHandleNow;
}

MFC中在对话框中实现键盘快捷键响应方法

针对MFC中如何在对话框中实现键盘快捷键响应: MFC对话框程序键盘消息响应与快捷键的实现 百度文库链接http://wenku.baidu.com/view/2604db8471fe910e...
  • xjujun
  • xjujun
  • 2012年08月29日 10:38
  • 1030

如何在对话框中响应键盘按键

2001年01月14日 21:50:00 我们首先想到的是响应WM_KEYDOWN消息,但实际运行却发现没有任何效果。原因是对话框里的控件需要首先对按键作出响应,比如多行编辑框必须首先处理回车...
  • softart
  • softart
  • 2007年10月27日 07:49
  • 279

如何在对话框中响应键盘按键

我们首先想到的是响应WM_KEYDOWN消息,但实际运行却发现没有任何效果。原因是对话框里的控件需要首先对按键作出响应,比如多行编辑框必须首先处理回车,不至于回车使对话框关闭。我们要想在第一时间对对话...
  • zzhll
  • zzhll
  • 2008年06月03日 11:11
  • 404

【MFC】基于对话框的键盘响应

VC中键盘事件处理主要是通过对相应的消息的响应,这些事件有如:WM_CHAR、   WM_KEYDOWN、WM_KEYUP等他们分别对应OnChar、OnKeyDown、OnKeyUp消息处  ...
  • zdhlwt2008
  • zdhlwt2008
  • 2015年06月30日 13:12
  • 2482

MFC长按键盘:执行多次、执行一次

先说明一下你按下一个键盘不松开的时候发生了什么:产生了多个按下的消息,切消息的内容都一样,是你按下的那个键。 实现长按的时候执行多次:比如你长按“A”按钮,可以让界面上的某个控件的数值一直增大...
  • ClamReason
  • ClamReason
  • 2015年01月09日 12:50
  • 1707

MFC 对话框Dialog响应键盘事件

OnKeyDown不行 Dialog程序本来没有直接响应键盘的事件,如果你用OnKeyDown会发现不起作用。 那么你想按下“左键”、“W键”、“9键盘”应该怎么响应呢? 重载基类的BOOL Pr...
  • ClamReason
  • ClamReason
  • 2015年02月12日 15:48
  • 2159

matlab中figure对象的按键响应

[转载] http://blog.sina.com.cn/s/blog_6163bdeb0100n9cq.html常用的有两个WindowKeyPressFcn和WindowKeyReleaseFcn...
  • u010186001
  • u010186001
  • 2017年06月16日 16:32
  • 630

QPushButton按回车发射信号或者界面的回车按键响应

Qt编程中,通常会设置某个按钮为默认焦点,当按键盘上“回车”的时候,就会发射clicked()信号,在用一个槽来接受这个信号,就可以做很多其他的处理。代码实现如下:   QPushButton*...
  • imxiangzi
  • imxiangzi
  • 2015年12月31日 10:24
  • 4531

C# WinForm键盘按键响应 实现思路

C# WinForm键盘按键响应 实现思路        例如:欲在FormMain.cs窗体上响应 Ctrl+W 组合按键操作,直接在FormMain.cs中添加如下代码:       ...
  • sean4m
  • sean4m
  • 2016年06月15日 22:36
  • 489

qt响应键盘事件

Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效。下面关注点在按键特有的部分: focus 一个拥有焦点(focus)的QWidget才可以接受键盘事件。有输入焦点的窗...
  • jirryzhang
  • jirryzhang
  • 2017年02月24日 14:07
  • 1464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在对话框中响应键盘按键
举报原因:
原因补充:

(最多只允许输入30个字)