SetCapture捕获鼠标 ,转换获取的坐标
来源:互联网 发布:折八百淘宝商城女装 编辑:程序博客网 时间:2024/05/18 17:26
转载自:http://hi.baidu.com/flyin_thewind/item/5d501f271734be16087508a9
SetCapture()可以让指定的窗体捕获所有鼠标消息,但所有的坐标获取的地方 都需要转型
例如在 WM_MOUSEMOVE WM_XBUTTONDOWN(UP) 由 lParam 获取坐标 LONG x,y;
x = LOWORD(lParam);
y = HIWORD(lParam);
都需要改成
x = static_cast<short>(LOWORD(lParam));
y = static_cast<short>(HIWORD(lParam));
staic_cast 是 C++的转型操作符 直接用C的转型也可
x = (short)LOWORD(lParam);
y = (short)HIWORD(lParam);
原因
其实注意到
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
注意 x y 都是一个LONG 所以它们认为左数第1位是符号位 其他都表示数值
而 LOWORD HIWORD 得到的32位数 前16位都是0
所以 x y 一直会是正数 不会出现负数 (已经和鼠标在窗口上方和右方矛盾) 而且当lParam 是表示负坐标时 x y会是很大的整数 6xxxx (所以会画到很下面很右面去)
short x,y;
POINT pt;
x = LOWORD(lParam);
y = HIWORD(lParam);
pt.x = x;
pt.y = y;
也可以 short 会把 32位的数前16位抛弃 第17位作符号位 后面当作数值
不过要多用2个变量 专门用来获取坐标
- SetCapture捕获鼠标 ,转换获取的坐标
- SetCapture() 捕获鼠标
- 用SetCapture捕获鼠标消息
- 调用SetCapture()捕获其它线程的鼠标输入
- 实时捕获鼠标的坐标
- 获取鼠标的坐标
- 获取鼠标的坐标
- 获取鼠标的坐标
- Jquery 获取鼠标的坐标
- JS获取鼠标的坐标
- 获取当前鼠标的坐标
- JS获取鼠标的坐标
- C#获取鼠标的坐标
- 随鼠标获取鼠标的坐标代码
- 追根究底之以不变求万变:利用SetCapture捕获鼠标
- Javascript 事件捕获的备忘(setCapture,captureEvents)
- Javascript 事件捕获的备忘(setCapture,captureEvents)
- Javascript 事件捕获的备忘(setCapture,captureEvents)
- mysql的优化2
- 框架的艺术
- Mac App Store – “You have updates available for other accounts” bug
- 在linux终端下输出带颜色的字体
- tomcat配置项目路径问题
- SetCapture捕获鼠标 ,转换获取的坐标
- Unicode下的CString与String之间的相互转换
- 智能机成本跌穿200元
- 月初伤感日志巨献:爱流逝了,我依旧等你
- 面向切面(AOP)"与"面向对象(OOP)
- linux内核栈,内核同步,用户空间线程同步
- Android TextView的各种属性
- C#时间转JS时间格式
- Android View Animation