VC对话框控件不响应回车消息之解决方案

用IE浏览网页时回车就可提交信息,如:google搜索时填入搜索内容按回车键就可以提交

但在VC对话框里用webbrowser控件浏览网页时,按回车键就直接退出对话框程序了,

原因是对话框先截获回车消息,然后调用OnOK(),所以就退出了。

解决方法是重载PreTranslateMessage(MSG* pMsg)函数:

 

  1. BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)  
  2. {  
  3.     if((pMsg->message == WM_KEYDOWN)&&(pMsg->wParam == VK_RETURN))  
  4.     {  
  5.         return false;  
  6.     }   
  7.     return CDialog::PreTranslateMessage(pMsg);   
  8. }  
 

 

前段时间又碰到个类似的问题,回车是不关闭对话框了,还能提交表单,但有些网页在输入完回车后响应的是tab键,如:

登录界面,输入用户名后回车,光标会跳至密码输入框!用这种方法就比较麻烦了,这时还是重载WM_GETDEFID消息比较好!

注意:!!!!!重载了WM_GETDEFID消息就不要重载PreTranslateMessage了!!!!!

下面是重载WM_GETDEFID消息的方法

一、添加消息映射

  1. BEGIN_MESSAGE_MAP(CMyDlg, CDialog)  
  2.     ON_MESSAGE(DM_GETDEFID,   &CMyDlg::OnGetDefID)  
  3. END_MESSAGE_MAP()  

 

二、添加OnGetDefID函数定义

 

  1. LRESULT CMyDlg::OnGetDefID(WPARAM wParam, LPARAM lParam)  
  2. {  
  3.     return MAKELONG(0, DC_HASDEFID);       
  4. }  
 

 

重载WM_GETDEFID消息是从如下blog处看到的,http://blog.csdn.net/citysheep/archive/2010/11/04/5987969.aspx

还附上另外一篇讲处理回车转tab的处理方法http://www.wangchao.net.cn/bbsdetail_47936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值