您的位置:首页 > 其它

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

2011-04-12 11:26 204 查看
用IE浏览网页时回车就可提交信息,如:google搜索时填入搜索内容按回车键就可以提交

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

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

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

view plaincopy to clipboardprint?

BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)

{

if((pMsg->message == WM_KEYDOWN)&&(pMsg->wParam == VK_RETURN))

{

return false;

}

return CDialog::PreTranslateMessage(pMsg);

}

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

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

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

下面是重载WM_GETDEFID消息的方法

一、添加消息映射

view plaincopy to clipboardprint?

BEGIN_MESSAGE_MAP(CMyDlg, CDialog)

ON_MESSAGE(DM_GETDEFID, &CMyDlg::OnGetDefID)

END_MESSAGE_MAP()

二、添加OnGetDefID函数定义

view plaincopy to clipboardprint?

LRESULT CMyDlg::OnGetDefID(WPARAM wParam, LPARAM lParam)

{

return MAKELONG(0, DC_HASDEFID);

}

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

还附上另外一篇讲处理回车转tab的处理方法http://www.wangchao.net.cn/bbsdetail_47936.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐