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

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

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

【 tulaoshi.com - 编程语言 】

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

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

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

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

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

(本文来源于图老师网站,更多请访问https://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,表示消息信息是否应该从消息队列中删除。

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

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

延伸阅读
问题 有的程序员希望能够在应用程序装入前以及显示主窗口后的几秒钟内显示 About 框。这样的实现在专业 Windows 应用程序中比比皆是。但在—般的应用程序中也需要实现此功能,而且还需要 About 框在显示一定时间后自动消失。或者在用户点击应用程序的主窗口后消失。 那么,如何利用 Windows API 函数来创建满足这些要求的 About 框呢...
VC应用程序框架提供的强大功能,为我们的开发提供了极大的方便,利用它可以很轻松地生成应用程序的框架.许多常用功能,例如文档的创建,文件的打开,保存等操作的大部分代码都由应用程序框架来完成.这些操作对于开发软件的用户而言是透明的。微软设计Visual C++的初衷是尽量向用户提供尽可能简单的接口,但是,正是因为应用框架的这一透明性,使VC...
标签: 电脑入门
您知道怎么消除应用程序乱码吗?掌握消除应用程序的乱码的方法是非常重要的,下面就给您介绍怎么消除应用程序的代码. 当你运行某些中文软件时,假如菜单等显示界面上出现乱码,一般可能是软件的中文链接库被英文链接库覆盖引起的,这类乱码经常发生在用微软开发工具(例如 VB、VC)开发的中文软件上。 因为你开发的这类软件,菜单等显示界面上的...
标签: 电脑入门
许多新手在安装Mac 后,不知道如何安装应用程序来使用,今天图老师小编就教教大家如何安装dmg类型的安装包,Mac安装的方法其实很简单,我只是点拨一下新手。我以QQ浏览器为例吧! 步骤方法 首先我们需要选择一款自己需要的软件,当然exe类型的都不可以,Mac不支持Win的程序,其实腾讯开发的Mac软件很不错,我随便举个例子,先下载一个安...
如何关闭iphone后台应用程序? 如何关闭后台应用程序? 是否感觉到你的iPhone耗电量越来越大、运行速度越来越慢了?如果出现了这个问题,很大程度上是因为很多程序依然在后台运行,下面就是关于iPhone4后台运行程序的管理方法: 1.按两下主屏幕按钮后,下方会出现一列还在后台运行的程序。 按两下主屏幕按钮截图 2....

经验教程

970

收藏

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