网站大量收购独家精品文档,联系QQ:2885784924

MFC回车键不关闭对话框.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
/cseries/mfcreturnkeyshutdialog.htmlMFC回车键不关闭对话框以及变成TAB键效果之前在弄完这个十六进制字符串异或的工具后,发现直接按回车键就直接关闭了工具。网上搜了下解决方案,然后自己的总结如下4种方法:1 设置一个默认按钮(不推荐)如/cseries/studymfchexstrxortool1.html前文小节5中所述,只要将“进行异或”这个按钮属性中的Default Button设置为TRUE就行了。但是这样就直接触发这个按钮对应的事件OnBnClickedButton1,而不是对输入的数据进行合法性检查。2 比较推荐的是重载OnOK()函数或者PreTranslateMessage()函数首先我们需要找到这两个函数的位置,方法有两种,效果都是殊途同归:在类视图中点击对话框类(CHexStrXorDlg),然后在“属性”中点击菜单栏上的“重写”按钮,可以选择需要重写的函数。或者直接点击“项目”——“类向导”,“类名”选择对话框类(CHexStrXorDlg),点击“虚函数”就可以看到可以被重载的函数了,右侧是已经被重载了的函数。3 取消回车的效果通过重载OnOK()函数,然后函数体内不做任何处理,这样就可以直接屏蔽回车键的效果了。void CHexStrXorDlg::OnOK(){ //CDialog::OnOK(); return;}4 获取焦点位置,根据是否在Button按钮资源上做相应处理通过重载PreTranslateMessage()消息函数,可以改变MFC的消息控制流程,能自主处理键盘和鼠标消息。于是,先捕捉到回车键所在的控件焦点,然后判断是否是Button按钮。如果焦点在Button按钮上,则给资源ID为i的Button按钮发送点击消息,否则设置下一个控件得到输入焦点。BOOL CHexStrXorDlg::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if ((pMsg-message == WM_KEYDOWN (int)pMsg-wParam == VK_RETURN)) { CWnd * wind = GetFocus(); if (wind) { //判断焦点是否在Button按钮上 char str[50]; CString ClassName = _T(Button); GetClassName(wind-m_hWnd, str, 50); if (ClassName == str) { UINT i = wind-GetDlgCtrlID(); SendMessage(WM_COMMAND, i, (LPARAM)wind-m_hWnd); return TRUE; } } //获取当前焦点所在控件的下一个控件的句柄 wind = GetNextDlgTabItem(GetFocus()); if (wind) { //设置下一个控件得到输入焦点 wind-SetFocus(); return TRUE; } } return CDialogEx::PreTranslateMessage(pMsg);}5 直接把回车键的效果替换成TAB键的效果同小节4中一样,先要获取焦点位置信息,但是直接将回车的效果替换成TAB键的效果。BOOL CHexStrXorDlg::PreTranslateMessage(MSG* pMsg){ if ((pMsg-message == WM_KEYDOWN (int)pMsg-wParam == VK_RETURN)) { //把回车效果替换成TAB键的切换效果 if( GetFocus-GetDlgCtrlID() != IDOK ) { pMsg-wParam = VK_TAB; } } return CDialogEx::PreTranslateMessage(pMsg);}

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档