模态对话框下的键盘响应

很多时候,在参数输入完成后,都需要点击一个按钮来执行某些操作。那么,更多的人是习惯敲击键盘上的回车键来响应该事件。


那么,如何响应回车键呢?


当然,若我们将MFC中系统默认的OK键作为响应的按键的话,那就不需要其他设置了。但是,往往我们会出现响应手动添加的button的响应。


搜索为例: 

 在文本框里输入关键字后,敲击回车键响应筛选键。


本质而言:响应键盘消息就是要重载PreTranslateMessage()函数。 


BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: 在此添加专用代码和/或调用基类


 switch(pMsg->message)
 {
 case WM_KEYDOWN:
  switch(pMsg->wParam)
  {
   //处理Escape键的消息
  case VK_ESCAPE:
    return TRUE;
  case VK_RETURN:
   if (::GetDlgCtrlID(pMsg->hwnd) == IDC_EDIT1)//文本框ID:IDC_EDIT1
   {//按钮ID:IDC_BUTTON1
    PostMessage(WM_COMMAND, MAKEWPARAM(IDC_BUTTON1, BN_CLICKED), (LPARAM)GetDlgItem(IDC_BUTTON1)->m_hWnd);
   }
   return TRUE;
  default:
   break;
  }
  break;
 default:
  break;
 }
 return CDialog::PreTranslateMessage(pMsg);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值