当前位置: 首页 > wzjs >正文

聊城集团网站建设价格自制网站教程

聊城集团网站建设价格,自制网站教程,台州制作网站软件,推广公司的新产品英语文章目录1 按回车键 程序闪退问题1.1 问题描述1.2 原因分析1.3 解决办法1.3.1 方法一:OnOK函数写成空函数1.3.2 方法二: 直接返回2 关闭 ESC键程序退出 问题2.1 [方法1]2.2 [方法2]1 按回车键 程序闪退问题 1.1 问题描述 在输入框输入完毕后一般习惯 回…

文章目录

  • 1 按回车键 程序闪退问题
    • 1.1 问题描述
    • 1.2 原因分析
    • 1.3 解决办法
      • 1.3.1 方法一:OnOK函数写成空函数
      • 1.3.2 方法二: 直接返回
  • 2 关闭 ESC键程序退出 问题
    • 2.1 [方法1]
    • 2.2 [方法2]

1 按回车键 程序闪退问题

1.1 问题描述

在输入框输入完毕后一般习惯 回车键,

但MFC程序运行后,在编辑框输入回车,运行窗口立即退出。

在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者 ESC键,程序就会立刻退出,

1.2 原因分析

产生这样的原因,有以下几种情况:

  • ①按下Enter 键时,Windows 就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。

  • ②如果所有按钮都没有获得输入焦点,windows 就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。

  • ③如果对话框没有默认按钮,那么即使对话框中没有 OK 按钮,OnOK 函数也会动被调用,

对于一个普通的对话框程序来说,OnOK 函数的调用,以为着程序会立刻退出。

1.3 解决办法

1.3.1 方法一:OnOK函数写成空函数

为了使Enter 键无效,最简单的办法就是将 CExDIg的OnOK函数写成空函数,然后针对OK按钮写一个新的函数来响应。

(事实上针对OK按钮,我没有写一个新的函数,但系统自带的 确认/取消 按钮仍然可用)

在…Dlg.h文件中申明

void OnOK();

在…Dlg.cpp文件中写一个空的OnOK()函数

void CSerialPortDlg::OnOK()
{//MFC的Enter键默认调用OnOK 函数,//用户在运行的时候,如果不注意按下了ENTER或者 ESC键,程序就会立刻退出,//为了使Enter 键无效,最简单的办法就是将的OnOK函数写成空函数//此时,系统自带的 确认/取消 按钮仍然可用
}

在这里插入图片描述

在这里插入图片描述
到此解决了

1.3.2 方法二: 直接返回

自己的操作完成之后一定要直接返回,不要把回车消息继续交给MFC函数处理!!!

BOOL CSSmallClassDlg::PreTranslateMessage(MSG* pMsg)
{// TODO: 在此添加专用代码和/或调用基类if (pMsg->message == WM_KEYDOWN){//是回车消息  并且 是你的编辑框上的 回车消息if (pMsg->wParam == VK_RETURN && pMsg->hwnd == m_SendDataEdit.m_hWnd){//中间 你自己 的 响应操作//自己添加的 代码 完成后 就直接返回 不要把消息继续交给下边的函数(系统处理)return TRUE;}}return __super::PreTranslateMessage(pMsg);
}

2 关闭 ESC键程序退出 问题

ESC键的原理也是如此,它是默认和 OnCancel函数映射在一起的。对于 ESC 键,需要自己重载 CDialog 类的 PreTranslateMessage 函数,当发现是 ESC 键的时候,过滤掉这个消息或者是替换掉这个消息。

以下是简单的代码示例

2.1 [方法1]

可以先重载OnOK函数

void CTestDlg::OnOK()
{//里面什么也不写
}

然后重载 PreTranslateMessage 函数,把 ESC 键的消息,用RETURN 键的消息替换,这样,按 ESC的时候,也会执行刚才的OnOK 函数,这样问题就可以解决了

BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE){pMsg->wParam = VK_RETURN;//将ESC键的消息替换为回车键的消息,这样按ESC的时候//也会去调用 OnOK函数,而OnOK什么也不做,这样ESC也被屏蔽}return CDialog::PreTranslateMessage(pMsg);
}

2.2 [方法2]

直接在重载的 PreTranslateMessage函数中屏蔽回车和 ESC的消息,和以上方法大同小异

BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE) return TRUE; if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) return TRUE;elsereturn CDialog::PreTranslateMessage(pMsg);
}
http://www.dtcms.com/wzjs/369882.html

相关文章:

  • 淘宝店网站怎么做互联网推广方案怎么写
  • 二手房网站建设企业官网怎么做
  • 旅游门户网站建设方案网站软文代写
  • 学做视频的网站百度搜索词排名
  • 医疗医院网站建设找代写文章写手
  • 火狐 wordpress主题企业seo网络推广
  • 佛山疫情最新情况今天seo基础培训机构
  • 公司网站的建设流程市场营销策略
  • 设计一套网站价格百度推广工作怎么样
  • 长沙低价网站建设百度收录什么意思
  • 旅游网站开发哪家好网址收录
  • 阿里巴巴做企业网站网络公司名字大全
  • 设计网名的特殊符号seo会被取代吗
  • 京东商城官方网站企业网站推广公司
  • 2018wordpress主题湖南网站建设推广优化
  • seo案例网站推广普通话宣传标语
  • 建设租房子的网站河北百度seo关键词排名
  • 燕郊做网站搜索引擎优化的方式有哪些
  • 网站如何申请微信支付功能网站创建的流程是什么
  • 日本做ps4游戏视频网站发帖平台
  • 建网站pc版 (报价)郑州seo推广
  • 网站建设 成本分析正规优化公司哪家好
  • 便宜模板网站建设百度指数特点
  • 城乡建设部网站第35号令网络培训总结
  • 运城门户网站建设沈阳百度seo
  • 建设网站需要多少时间seo技术经理
  • 宝安做棋牌网站建设哪家公司便宜百度帐号申请注册
  • 织梦个人网站模板百度热搜榜小说排名
  • 建设网站哪个比较好web网站设计
  • 网站日志状态码深圳谷歌优化seo