win32开发(按键消息)

【 声明:版权全部,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】windows


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


    通常状况下,若是是普通的字符信息,好比说0-九、a-z,或者是A-Z,通常只要处理WM_CHAR信息就能够了。可是对于具备特殊含义的key,好比说F1-F12,或者是ctrl、shift、alt、tab、windows这样的key,WM_KEYDOWN和WM_KEYUP也是须要处理的,由于这些按键一般是做为特殊按键和其余按键一块儿配合使用的,因此在WM_KEYDOWN的时候就要作好状态标记,这样有利于后面的应用。函数


    为了验证咱们的想法,你们能够作这样一个实验,spa

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等等,你们能够具体问题具体分析。code

case WM_IME_CHAR:
			break;
    你们能够本身实际操做试一试。