MFC Windows程序设计学习笔记--鼠标和键盘
来源:互联网 发布:护眼台灯 知乎 编辑:程序博客网 时间:2024/05/18 02:12
设备驱动程序处理鼠标和键盘中断,将结果事件放在一系统范围队列中。
鼠标
1.
客户区鼠标消息:
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK
WM_MBUTTONDOWN
WM_MBUTTONUP
WM_MBUTTONDBLCLK
WM_RBUTTONDOWN
WM_RBUTTONUP
WM_RBUTTONDBLCLK
WM_MOUSEMOVE
客户区鼠标响应函数具备一样的函数类型,参数列表形式:
(UINT nFlags, CPoint point)
uFlags:
MK_LBUTTON
MK_MBUTTON
MK_RBUTTON
MK_CONTROL
MK_SHIFT
表示事件发生时相应键的状态
鼠标消息被发送到光标下面的窗口。
例外:
在接收鼠标按下消息后,将鼠标捕获CWnd::SetCapture。在鼠标松开后,释放CWnd::ReleaseCapture。在捕获过程中,鼠标消息都会发给捕获其的窗口处理。CWnd::GetCapture返回一个CWnd*,指向捕获鼠标窗口,没有窗口捕获或另一线程窗口捕获返回NULL。
一个键被快速单击两次:
含CS_DBLCLKS风格窗口收到:
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK
WM_LBUTTONUP
对不含CS_DBLCLKS风格窗口收到:
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDOWN
WM_LBUTTONUP
2.非客户区鼠标消息
WM_NCLBUTTONDOWN
WM_NCLBUTTONUP
WM_NCLBUTTONDBLCLK
WM_NCMBUTTONDOWN
WM_NCMBUTTONUP
WM_NCMBUTTONDBLCLK
WM_NCRBUTTONDOWN
WM_NCRBUTTONUP
WM_NCRBUTTONDBLCLK
WM_NCMOUSEMOVE
非客户区鼠标消息的响应函数,也具备同样的类型。参数列表形式为:
(UINT nHitTest, CPoint point)
point:这里为屏幕坐标。
nHitTest为事件发生位置的命中测试码。
3.其它
窗口在接收一个客户区或非客户区鼠标消息前,先收到光标的屏幕坐标和WM_NCHITTEST消息。
Windows处理WM_NCHITTEST消息时,根据光标屏幕坐标再产生一个客户区或非客户区鼠标消息。
执行一次,::TrackMouseEvent来设置鼠标离开或盘旋时,向窗口发送WM_MOUSELEAVE或WM_MOUSEHOVER消息。一次调用只会一次有效。须在#include
键盘
Windows将键盘消息送到带有 输入焦点的窗口。
CWnd::SetFocus/CWnd::GetFocus
1.击键消息
WM_KEYDOWN
WM_KEYUP
Alt,F10不产生此两消息。
Alt按下时,此后按下其它键会产生WM_SYSKEYDOWN,WM_SYSKEYUP.
F10按下,系统进入特殊模态:将下次击键看作菜单选择的快捷方式。
消息响应函数类型一致,参数列表:
(UINT nChar, UINT nRepCnt, UINT nFlags)
nChar:虚拟键代码
nRepCnt:重复次数
nFlags:
对OEM扫描码,可用::MapVirtualKey转为虚拟键
虚拟键代码:
A-Z,a-z,0-9虚拟键代码和他们的ANSI码一样。
; [ ]没虚拟键代码
2.字符消息
::TranslateMessage将与字符键有关的击键消息转为WM_CHAR消息。
每个WM_CHAR包含一 与 ANSI或Unicode字符集中符号映射的字符代码。
(UINT nChar, UINT nRepCnt, UINT nFlags)
nChar:ANSI或Unicode字符代码
nRepCnt:重复次数
nFlags:
Alt按下时,产生WM_SYSCHAR消息。
3.插入符
CreateCaret
SetCaretPos/GetCaretPos
ShowCaret/HideCaret
::DestroyCaret
插入符被同一个线程内所有窗口共享
使用:
1.窗口收到输入焦点,创建。失去输入焦点,销毁。
2.可见性控制
3.绘制含插入符部分时,先隐藏,完成绘制,再显示。
- MFC Windows程序设计学习笔记--鼠标和键盘
- windows程序设计学习笔记-键盘,鼠标,计时器
- windows程序设计:键盘和鼠标
- windows程序设计:键盘和鼠标
- Windows程序设计之键盘和鼠标
- 20160401 第3章 鼠标和键盘(来自《MFC Windows 程序设计(第2版)》)
- MFC Windows 程序设计 第三章 鼠标与键盘
- MFC 鼠标和键盘
- MFC Windows程序设计学习笔记--文件和串行化
- MFC Windows 程序设计->捕获鼠标
- MFC Windows程序设计学习笔记(第一章)
- MFC Windows程序设计学习笔记--滚动条
- MFC Windows程序设计学习笔记--菜单
- MFC Windows程序设计学习笔记--控件
- MFC Windows程序设计学习笔记--MFC集合类
- windows编程学习笔记(6)键盘与鼠标输入
- MFC Windows 程序设计->键盘加速键
- MFC学习笔记之:Windows如何区分鼠标双击和两次单击
- java自带线程池和队列详细讲解
- 虚拟方法调用
- java 规则学习
- POJ
- jQuery节点操作练习
- MFC Windows程序设计学习笔记--鼠标和键盘
- 一天一个知识点-委托
- Linux高级程序_进程管理
- bzoj 3528: [Zjoi2014]星系调查
- 阿里一面
- Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)
- 算法(第4版本)1.1.22
- python tcp/Ip示例
- 2017 年 Go 语言编程的发展