vc中的 drop down 类型的combo控件 如何响应回车事件

vc中的 drop down 类型的combo控件 如何响应回车事件

 

找到了两个答案

第一个答案试过,没有问题 

转自http://topic.csdn.net/t/20040512/10/3057495.html

 

如下

BOOL CTestDlgChartDlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 if(   pMsg-> message   ==   WM_KEYDOWN   )
 {                
  switch(   pMsg-> wParam   )
  {
   case   VK_RETURN:
   CEdit   *pEdit   =   (CEdit*)m_cb2.GetWindow(GW_CHILD);
   if(pMsg-> hwnd   ==   pEdit-> m_hWnd   )
   {
//    GetDlgItem(IDC_EDIT1)-> SendMessage(WM_KILLFOCUS,   0,   0);
//    GetDlgItem(IDC_EDIT2)-> SetFocus();
   AfxMessageBox("jjj");
   }

   return   TRUE;

  }
 }
 
 return CDialog::PreTranslateMessage(pMsg);
}

 ==========*****************

下面为第二个答案没有实际试过。

在Dialog中有一个Combo Box 控件,是drop down类型的,在其中可以输入数据,但是手动输入后,按回车,没有任何反应。

后来在网上查到,回车事件被主窗口截取了。

 

答案如下: 转自 http://topic.csdn.net/t/20050709/22/4134262.html

 

 

子类化组合框的子EDIT窗口,处理键盘消息。
对话框会默认处理回车消息,所以EDIT会收不到。要解决这个问题,你可以重载PreTranslateMessage消息来拦截回车消息。,如果是回车消息,则不交给默认处理函数

========================

 

lbird谢谢你的回答,我按照你的回答重载了组合框的子EDIT窗口以上的所有窗口的PreTranslateMessage函数,并且在函数中加上了如下代码:
if(pMsg-> message==WM_KEYDOWN   &&   pMsg-> wParam==VK_RETURN)
return   TRUE;
但是,按回车后还是没有反应,不知道为什么?
另外,你说的“重载PreTranslateMessage”,是指重载哪一个窗口的PreTranslateMessage?

 

=====================

搞定了,原来在组合框的子EDIT窗口以上的所有对话框窗口中要重载PreTranslateMessage函数,因为只要是对话框,就会将回车消息截下自己处理,而不会传递给下一窗口。并且RETURN值必须为FALSE,即不翻译消息,直接传递给下一窗口,如果为TRUE,就会翻译消息后退出消息传递。我已经完全理解了,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值