可视化:windows应用程序对键盘鼠标的响应

键盘与鼠标是windows应用程序的输入设备

键盘消息

按键后,电路产生编码,每个有意义的键都对应一个唯一的扫描码,按键或释放键会产生。但不同产家生产的设备产生的编码不同,所以用虚拟码(e.gVK_ENTER)统一表示,表示成设备无关的键。

按键消息过程:

  1. 设备驱动程序获取键的扫描码,将扫描码翻译为虚拟码。产生了一条含扫描码、虚拟码和其它按键相关信息的消息。
  2. 设备驱动程序将消息放到系统的消息队列。
  3. windows从系统队列里取出消息,再把它发到相应的线程消息队列中,即应用程序队列。
  4. (经过主函数WinMain()消息循环),由窗口过程(wndProc())从取出线程队列中取出消息,进行进一步处理。(应用程序对应的某一个窗口)。

WinMain()函数消息循环中的TranslateMessage():将按键消息(WM_KEYDOWN等)转化为字符消息WM_CHAR与WM_DEADCHAR(不能显示字符)。

键盘消息

包含两类按键消息与字符消息。按下一个键就会产生这两种消息。

按键消息

两类:系统键消息(alt+*,由系统内存部直接处理,应用程序不用处理)与非系统键消息。

按键消息两个变量:wParam与lParam

字符消息

WM_CHAR与WM_DEADCHAR(不可显示)

插字符caret

指示当前正文位置。

//创建插字符 
BOOL CreatCaret(hWnd,hBitmap(一般NULL),hWidth,hHeight) 
//显示插字符 
BOOL ShoeCaret(hWnd) 
//设置插字符位置 
BOOL SetCaretPos(int x,int y) 
//获取插字符位置 
BOOL GetCaretPos(LPPOINT lpPoint)

鼠标消息

windows中通过光标来指示当前鼠标位置

鼠标光标

系统有预设的,在系统盘cursors文件夹下保存,用常量IDC_…表示,如IDC_NO。用户可以自定义光标图标:在资源文件中保存图片为.cur文件。

光标cursor

指示鼠标当前位置

加载光标

应用程序加载光标一般在定义窗口时(初始化时)。程序运行过程中也可以。

WNDCLASSEX wndclass;
 ………… 
wndclass.hCursor=LoadCursor(hThisInst,IDC_WAIT)

鼠标Iparam低位0~15

鼠标消息检测

监测shift与ctrl 时用:

case WM_LBUTTONDOWN: if((wParam&&MK_CONTROL)&&(wParam&&MK_SHIFT)) ... break;

不监测shift与ctrl 时用:

//单击鼠标左键 case WM_LBUTTONDOWN: //释放鼠标左键 case WM_LBUTTONUP: //处理鼠标移动消息 case WM_MOUSEMOVE:

鼠标应用程序实例

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值