关于WIN32 窗口信息的各种获取
来源:互联网 发布:淘宝无线链接 编辑:程序博客网 时间:2024/05/19 12:28
一、当前鼠标点击位置的获取
首先拦截WM_LBUTTONDOWN消息,然后再用下面方法获取鼠标位置
方法一:(不建议使用)在使用win32的一些特殊宏时,有必要注意一下宏的定义,例如:
- #define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) | ((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))
- #define MAKELONG(a, b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))
- #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
- #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
- #define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff))
- #define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8))
使用方法:
- xPos = LOWORD(lParam);
- yPos = HIWORD(lParam);
对于一般情况,用方法一是没有问题的,但有一个特例,就是利用它们取当前鼠标的坐标时,因为鼠标有时候会移出窗口,因此我们得到的值本应该是负数,但是利用这两个宏得出的值始终是正值。我们可以用以下的宏来代替。
- #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
- #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
使用方法:
- xPos = GET_X_LPARAM(lParam);
- yPos = GET_Y_LPARAM(lParam);
注意:方法一中的函数没有试,但方法二中的函数,获取的是客户区的坐标,不包括非客户区,除非窗体类型是如WS_POPUP等此类只有客户区的窗体!
方法三:GetCursorPos()获取鼠标的屏幕坐标
这个就无所谓是不是要拦截消息了,直接就可以用!但获取的鼠标的屏幕坐标,如果要转化成窗体客户区坐标,需要使用ScreenToClient();
二、获取窗口边框的宽度和标题宽度等系统信息
使用GetSystemMetrics
0 0
- 关于WIN32 窗口信息的各种获取
- 关于WIN32 窗口信息的各种获取
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小的一点点研究
- 关于获取各种浏览器可见窗口大小。
- win32 获取窗口句柄的方法
- win32 获取窗口句柄的方法
- 获取网络设备信息的win32程序
- [Win32]本地计算机网络信息的获取
- [Win32]本地计算机网络信息的获取
- [Win32]本地计算机网络信息的获取
- Win32 获取进程占用的内存信息
- 黑马程序员——线程Thread
- MINI6410-启动Android系统-串口消息
- ImageView显示本地和网上的图片
- 注册_手机号码验证
- Trie字典树算法
- 关于WIN32 窗口信息的各种获取
- TortoiseSVN使用简介
- (转)百度2014移动研发笔试题目——1013清华版
- onMenuOpened不调用问题
- oracle中imp导入数据中文乱码问题
- UVA 11107 Life Forms 后缀数组
- 从入门到精通我是这样学习算法的
- Spring 多数据源事务配置问题
- Solr从Mongodb索引数据(上