如何在应用程序忙碌时探测用户的按健

2016-02-19 16:40 6 1 收藏

下面图老师小编要跟大家分享如何在应用程序忙碌时探测用户的按健,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

  这个问题在论坛中的出现频率很高。在解决这个问题时,首先要明确Windows处理用户输入的方法完全不同于Dos操作系统。当用户按键后,Dos应用向操作系统提出请求,而在Windows中,当用户事件发生时,是由Windows请求调用相应的代码,代码实现自己必须的处理,最后将控制返回到操作系统。

  当你从Dos操作系统编程转向Windows的时候,你会很不习惯Windows的面向事件与消息的处理模式,但是面向对象的处理方法在Windows中非常灵活实用。

  本文要讨论的问题是如何在应用程序中实现用户事件的轮询。例如,当你的应用程序在忙碌状态时,如何探测用户按键(Escape)来终止正在进行的处理或操作。

  当用户按键或移动鼠标导致系统事件发生时,操作系统将这些事件存储在相应的应用程序消息队列中,事件会一直以消息的形式存储在消息队列中直到应用程序完消息并将控制返回到Windows,这时Windows将把消息队列中的下一条消息发送到应用程序。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  所以,为了确定是否用户已经按下了某一个按键,应用程序需要确定某一按键的消息当前是否在消息队列中。为此可以调用PeekMessage函数,例如:

  

MSG msg;// 检查是否按下 Escape 键if (::PeekMessage(&msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE)) {if (msg.message == WM_KEYDOWN && msg.wParam == VK_ESCAPE)// 退出循环或者停止处理;}

  第一个参数MSG结构接收与消息有关的信息。第二个参数是window句柄,如果程序是基于MFC的应用,这个参数传递m_hWnd即可。下两个参数是确定类型的消息,PeekMessage将返回消息队列中落在这两个值之间的第一个消息。因为这里我们感兴趣的是按键,所以就用WM_KEYFIRST 和 WM_KEYLAST作为参数。最后一个参数可以是PM_NOREMOVE 或者 PM_REMOVE,表示消息信息是否应该从消息队列中删除。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  如果PeekMessage在请求范围内寻找消息,他返回非零值。这样上面的代码检查是否发现WM_KEYDOWN消息并且wParam等于VK_ESCAPE,如果发现则退出循环并终止代码的处理。

来源:http://www.tulaoshi.com/n/20160219/1612737.html

延伸阅读
标签: 电脑入门
PPTV出现应用程序错误提示的解决方法: 1) 请先确认所使用的网络电视是否是当前最新版本,如果不是,请去官方网站http://www.pptv.com 下载最新版本并重新安装,再打开PPTV看看是否能解决该问题。 2) 如果上述步骤都不能解决遇到的问题,请尝试联系客服人员,获取在线帮助。 PPTV网络电视是PPLive旗下产品,一款P2P网络电视软件,支持对...
标签: 电脑入门
许多新手在安装Mac 后,不知道如何安装应用程序来使用,今天图老师小编就教教大家如何安装dmg类型的安装包,Mac安装的方法其实很简单,我只是点拨一下新手。我以QQ浏览器为例吧! 步骤方法 首先我们需要选择一款自己需要的软件,当然exe类型的都不可以,Mac不支持Win的程序,其实腾讯开发的Mac软件很不错,我随便举个例子,先下载一个安...
问题 有的程序员希望能够在应用程序装入前以及显示主窗口后的几秒钟内显示 About 框。这样的实现在专业 Windows 应用程序中比比皆是。但在—般的应用程序中也需要实现此功能,而且还需要 About 框在显示一定时间后自动消失。或者在用户点击应用程序的主窗口后消失。 那么,如何利用 Windows API 函数来创建满足这些要求的 About 框呢...
标签: 电脑入门
您知道怎么消除应用程序乱码吗?掌握消除应用程序的乱码的方法是非常重要的,下面就给您介绍怎么消除应用程序的代码. 当你运行某些中文软件时,假如菜单等显示界面上出现乱码,一般可能是软件的中文链接库被英文链接库覆盖引起的,这类乱码经常发生在用微软开发工具(例如 VB、VC)开发的中文软件上。 因为你开发的这类软件,菜单等显示界面上的...
新的JavaTM 虚拟机(VMs)具有能够提高性能的特点, 并且你可以使用许多工具来提高应用程序的性能或减小一般类文件的尺寸。这种Java虚拟机的特性和工具可使你在不改变应用程序、或对应用程序仅做很小改动的情况下, 提高应用程序的性能。 Java虚拟机的特性 !-- frame contents -- !-- /frame contents -- Ja...

经验教程

299

收藏

84
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部