第5章 键盘与鼠标.pptVIP

  • 3
  • 0
  • 约1.01万字
  • 约 41页
  • 2017-06-02 发布于河南
  • 举报
第5章 键盘与鼠标

第6章 Windows应用程序中的键盘与鼠标 Huang Weitong 第5章 Windows应用程序 对键盘与鼠标的响应 键盘按键消息 系统中系统按键与非系统按键是截然不同的,系统按键产生系统按键消息:WM_SYSKEYDOWN、WM_SYSKEYUP,而非系统按键产生非系统按键消息:WM_KEYDOWN与WM_KEYUP。   如果窗口处理函数确实有必要处理系统按键消息的,一定要在处理完毕后,把消息传递给DefWindowProc函数。否则, 所有的系统操作,包括ALT键都会失效,即便窗口的确获得了焦点。也就是说,用户将不能访问窗口菜单或者系统菜单,又或者使用 ALT+ESC(ALT+TAB)组合键激活其他窗口了。 键盘按键消息 系统按键消息主要是系统使用的,系统用这些消息提供菜单的内置键盘接口,以及允许用户控制激活不同的窗口。系统按键消息通常是用户按下ALT及某个键的组合键时产生的,又或者在用户按下但没有窗体拥有键盘焦点(比如,激活的应用程序最小化)时产生。如果消息产生的话,就会发送到激活窗体的消息队列中。   非系统按键消息是需要应用程序窗体处理的,DefWindowProc函数不会对这些消息作任何处理,窗体的处理过程可以忽略任意的不需要的非系统按键消息。 字符消息- WM_CHAR 按键消息可以提供许多按键的基本信息,但却不提供字符键的字符码,要想得到字符码,应用程序必须在自己的线程循环中包含TranslateMessage 函数,TranslateMessage传递WM_KEYDOWN或WM_SYSKEYDOWN消息到键盘布局,通过检查消息的虚键码,如果发现它是一个字符键的话,键盘布局就会提供一个字符码的等价物,然后产生一个包括字符码的字符消息,并放到消息队列的头部。消息循环的下一次处理就会把字符消息从队列中删除,并分发给相应的窗口处理过程。 * * 扫描码是依赖于具体设备的,为达到设备无关性的要求,往往使用与具体设备无关的虚拟码,虚拟码是由Windows系统定义的与设备无关的键的标识 由于键盘的输入 按键信息 扫描码、虚拟码以及其他与按键有关的消息 设备驱动程序 截取键的扫描码 翻译 虚拟码 它含 键盘上的键 对应 一个唯一的标识值(扫描码) 按下或释放某键时 产 生 取出键盘消息进行处理 信息 设备驱动程序 把消息放到系统的消息队列中 Windows从系统消息队列中取出消息 发送到相应的线程消息队列中 窗口过程 5.1 键盘在应用程序中的应用 虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,用以标识哪一个键被按下或释放,最常用的虚拟码已经在Windows.h(Winuser.h)中定义。 操作系统在接收到键盘输入后 把消息发送给具有“输入焦点(input focus)的窗口 应用程序一般有几个窗 口,但当按下某一个键 时,只有一个窗口能接 收到该键盘消息,接收 这个键盘消息的窗口称 为有“输入焦点”的窗口 有“输入焦点” 的窗口应是活 动窗口或者活 动窗口的子窗口 窗口正在接 收输入焦点 窗口函数通过捕获WM_SETFOCUS和WM_KILLFOCUS消息确定当前窗口是否具有输入焦点。 窗口失去 输入焦点 键盘消息 按键消息 字符消息 按下或松开一个键时 就产生了一按键消息 一个按键的组合产生了 一个可以显示的字符时, 就产生了一个字符消息 系统按键消息 非系统按键消息 Alt键与相关输入键的组合 产生的消息,这些键一般 由Windows系统内部直接 处理,应用程序不处理 若应用程序处理了这 些系统键消息,还要调 用DefWindowsProc()函 数,以便不影响系统对 它们的处理 不使用Alt键组合 的按键消息 按键消息的两个参数 wParam lParam 32位 重复计数位(0~15位) ScanCode扫描码(16~23位) 扩展键标志(24位) 保留位(25~28位) 上下文标志(29位) 键的先前状态(位30) 转换状态(31位) 包含了识别按下 的键的虚键码 扩充键标志   扩充键标志用来标识按键消息中是否包含了增强型键盘 的附加键,这些扩充键包括:键盘右手边的ALT、CTRL键, INS、DEL、HOME、 END、PAGE UP、PAGE DOWN, 小键盘左边的方向键,NUM LOCK、BREAK(CTRL+PAUSE)、PRINT SCRNT以及小键盘上的除号(/)键及ENTER键。 如果键为以上键的话,扩充键标志置为1。 上下文标志   上下文标志是为了说明按键消息产生时, ALT键是否已经按下,如果为1,表示ALT键已经按下, 否则没有按下。 WM_CHAR 字符消息 系统 非系统

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档