首页 > 其他分享 >win32开发(按键消息)

win32开发(按键消息)

时间:2022-11-23 13:08:41浏览次数:49  
标签:CHAR IME WM KEYDOWN win32 开发 key 按键



    对于一个应用来说,按键和鼠标都是基本的消息。当然,win32也需要独立处理按键消息和鼠标消息。今天,我们就讨论一下按键消息。一般认为,当键盘上一个key按下去之后,os会给app发送三个消息,分别是WM_KEYDOWN、WM_CHAR、WM_KEYUP。WM_KEYDOWN是在key按下去的一刹那发送的,WM_CHAR是os通知app按下去的字符是什么,WM_KEYUP则是key重启返回的时候发送的。


    一般情况下,如果是普通的字符信息,比如说0-9、a-z,或者是A-Z,一般只要处理WM_CHAR信息就可以了。但是对于具有特殊含义的key,比如说F1-F12,或者是ctrl、shift、alt、tab、windows这样的key,WM_KEYDOWN和WM_KEYUP也是需要处理的,因为这些按键通常是作为特殊按键和其他按键一起配合使用的,所以在WM_KEYDOWN的时候就要做好状态标记,这样有利于后面的应用。


    为了验证我们的想法,大家可以做这样一个实验,


case WM_KEYDOWN:
//MessageBox(NULL, "down", "tips", 0);
break;

case WM_KEYUP:
//MessageBox(NULL, "up", "tips", 0);
break;

case WM_CHAR:
MessageBox(NULL, "char", "tips", 0);
break;

    这是在WndProc里面添加的消息函数。大家可以先将MessageBox都注释掉,再一个一个打开。这个时候,就可以观察一下,当一个key按下去的时候,是不是真的会有对话框弹出来。如果对话框弹出来,尽量用鼠标来单击,这样可以避免key的影响。


    这里的key只是处理普通的字符,那如何处理输入法给出的字符串信息呢,其实win32在这方面也做好了准备。这个信息就是WM_IME_CHAR相关的信息。大家只要做好WM_IME_CHAR方面的处理,就可以收到输入法提供的字符串信息了。类似的消息还有WM_IME_KEYDOWN、WM_IME_KEYUP、WM_IME_COMPOSITION等等,大家可以具体问题具体分析。


case WM_IME_CHAR:
break;

    大家可以自己实际操作试一试。




标签:CHAR,IME,WM,KEYDOWN,win32,开发,key,按键
From: https://blog.51cto.com/feixiaoxing/5880994

相关文章

  • win32开发(调试)
      很多同学都喜欢看代码,但是不喜欢调试代码。其实,在我看来,调试代码本身也是一项重要的能力。一份代码,如果没有经过反复调试和验证,很难说自己是不是理解得够深刻。同样对......
  • win32开发(简单绘图)
      在win32上面,所有的操作都是通过消息来完成的。正如前面一节说的那样,WM_CREATE、WM_PAINT、WM_SIZE、WM_DESTROY、WM_CHAR等消息都是我们在开发中经常要遇到的消息内容......
  • win32开发(添加菜单)
      使用win32编写菜单是一件很简单的事情。要添加自己的菜单,其实只要做好两方面的事情就可以了,一个就是在ResourceView中找到菜单入口,另外一个就是在WndProc添加好回调函......
  • 嵌入式操作系统内核原理和开发(总结篇)
      很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题。现在郑重推荐一下raw-os系统,在我们的博客当中也多次提到了这个代码,希望大......
  • 嵌入式操作系统内核原理和开发(实时调度)
      和很多通用的操作系统相比,实时操作系统有自己的一个特点,那就是实时调度。通用操作系统的线程优先级一般是可以变化的,而实时系统的线程优先级却是不变的。之所以这么......
  • 嵌入式操作系统内核原理和开发(消息队列)
         消息队列是线程交互的一种方法,任务可以通过消息队列来实现数据的沟通和交换。在嵌入式系统上,这可以说这是用的最多的一种方法。通过消息队列,无论是发送者,还是接......
  • 嵌入式操作系统内核原理和开发(事件)
      在很多操作系统的书上,其实互斥和同步是放在一起进行介绍的。互斥,比较简单,就是对某一份资源或者几份资源进行抢占获取。而同步是什么意思呢,就是某一个线程等待另外一个......
  • 嵌入式操作系统内核原理和开发(地址空间)
      不管是什么样的嵌入式cpu,它必然有自己的访问地址空间。至于这个具体的访问空间是什么,那cpu就不知道了。它可以是ram,当然也可以是flash、uart、ide、i2c等。当然cpu不......
  • 嵌入式操作系统内核原理和开发(中断)
    系统。一旦你明白了中断的真正含义,你对操作系统的了解就算真正入门了。什么是中断呢?我们可以看看单片机下面是怎么做的。#include<REG51.h>sbitLED=P1^6;unsignedint......
  • iTOP2K1000开发板Makefile文件
    Makefile就是描述了整个工程编译连接等规则的文件。我们在终端输入完make命令之后,会调用make工具,make就会在当前目录按照文件名就会找makefile文件,Makefile的命......