博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows编程-处理键盘事件(2)
阅读量:6848 次
发布时间:2019-06-26

本文共 1420 字,大约阅读时间需要 4 分钟。

关于WM_KEYDOWN的消息中传递的是该键的虚拟扫描码,不是ASCII码。它传递了键被按下时的特征,细节的描述如下:

wParamThe virtual-key code of the nonsystem key. See .

lParamThe repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown following.例如,我们实现一个打印输入的virtual code的程序,只要在前面的程序中,填入:

1     case WM_KEYDOWN: 2         { 3             char virtual_code = wparam; 4             int key_state = lparam; 5      6          // get a graphics context 7          hdc = GetDC(hwnd); 8  9          // set the foreground color to green10          SetTextColor(hdc, RGB(0,255,0));11          12          // set the background color to black13          SetBkColor(hdc, RGB(0,0,0));14          15          // set the transparency mode to OPAQUE16          SetBkMode(hdc, OPAQUE);17 18          // print the virtual code and key state19          sprintf(buffer,"WM_KEYDOWN: Character = 0X%X   ",virtual_code);20          TextOut(hdc, 0,32, buffer, strlen(buffer));21 22          // release the dc back23          ReleaseDC(hwnd, hdc);        24         25         }break;

 

最后要介绍的是键盘状态函数:GetAsyncKeyState(). 函数的原型如下:

short GetAsyncKeyState(int virtual_key); 返回值的最高位为1表示该键被按下,否则该键被松开。一般我们可以采用简单的宏代替来完成测试。

View Code
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

 

转载于:https://www.cnblogs.com/bruce81/archive/2013/02/12/2910352.html

你可能感兴趣的文章
《Git权威指南》读书笔记 第四章 git初始化
查看>>
《Head first HTML与CSS 第二版》读书笔记 第九章 盒模型
查看>>
《Python面向对象……》之目录
查看>>
正则表达式断言
查看>>
十几万连接几M的流量,吓死“宝宝”了
查看>>
用DIV+CSS的网页布局对SEO的好处
查看>>
Office 365管理员指引 11——文档库同步
查看>>
集群入门简析及LB下LVS详解
查看>>
Linux与GPT
查看>>
java托盘开发界面记录
查看>>
管理或技术
查看>>
redis和linux相关操作命令
查看>>
分配到弱属性;对象将在赋值之后释放
查看>>
java作用域public ,private ,protected 及不写时的区别
查看>>
基于DirectShow的局域网内音视频流的多机共享
查看>>
Redisson
查看>>
CCNA考试要点大搜集(一)
查看>>
VS 解决方案平台和解决方案配置
查看>>
单链表中有环II
查看>>
window下如何使用命令行创建schedule task(计划任务)
查看>>