标题:--- GetCursorPos ---怎么声明?怎么用?
只看楼主
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
结帖率:84.62%
已结贴  问题点数:20 回复次数:6 
--- GetCursorPos ---怎么声明?怎么用?
我只知道设置鼠标位置的用法
Declare Integer SetCursorPos In user32 Integer,Integer

但是不知道读取鼠标位置的用法?
SetCursorPos怎么声明?怎么用?

其实一直有个疑问,就是这些声明到底是怎么个规律,一直一知半解,到底怎么去作声明后面一堆的写法到底依据是什么?我一直都是抄人家的依瓢画葫芦。

搜索更多相关主题的帖子: 声明 鼠标 位置 用法 Integer 
2017-09-01 09:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
DECLARE LONG GetCursorPos IN User32 STRING@
LOCAL stPOINT, nX, nY
stPOINT = REPLICATE(0h00, 8)
IF GetCursorPos(@stPOINT) == 1           && 获取当前鼠标座标
    nX = CTOBIN(LEFT(stPOINT, 4), "4RS")
    nY = CTOBIN(RIGHT(stPOINT, 4), "4RS")
ENDIF
2017-09-01 09:44
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
回复 2楼 吹水佬
谢谢!疑问:

stPOINT = REPLICATE(0h00, 8)
IF GetCursorPos(@stPOINT) == 1           && 获取当前鼠标座标

这两句是何道理?
2017-09-01 13:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用琅拿度在2017-9-1 13:01:41的发言:

谢谢!疑问:

stPOINT = REPLICATE(0h00, 8)
IF GetCursorPos(@stPOINT) == 1           && 获取当前鼠标座标

这两句是何道理?

GetCursorPos的原形可参考:
https://msdn.(v=vs.85).aspx
BOOL WINAPI GetCursorPos(
  _Out_ LPPOINT lpPoint
);
返回的是BOOL类型,1真,0假。
参数lpPoint是一个POINT结构体的地址。
POINT结构:
typedef struct tagPOINT {
  LONG x;
  LONG y;
} POINT, *PPOINT;
x和y各占4个字节,stPOINT = REPLICATE(0h00, 8)相当于分配一个POINT结构体空间stPOINT,@stPOINT就是这块空间的地址。
2017-09-01 14:20
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
, "4RS")

里的4RS什么道理?
2017-09-01 19:11
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
可用就先用了,谢谢!
2017-09-01 19:41
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用琅拿度在2017-9-1 19:11:01的发言:

, "4RS")

里的4RS什么道理?

"4RS"
4,4字节,共32位(32bit),由高位至低位标记:31,30 ...... 1,0
R, 与大小端模式有关,这与硬件有关,常用的X86结构是小端模式。
    大端模式,数据的高字节保存在内存的低地址,数据的低字节保存在内存的高地址。
    小端模式,数据的高字节保存在内存的高地址,数据的低字节保存在内存的低地址。
    可以这样比较一下看看:
    ? STRCONV(BINTOC(0x11223344, "4RS"),15)
    ? STRCONV(BINTOC(0x11223344, "4S"),15)
S,保留最高位(31位)作为符号位,即31位是0时正数,是1时负数。
2017-09-01 20:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480400-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.339786 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved