找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 617|回复: 1

[VBA程序]:如何实现CAD中鼠标屏幕坐标与Windows鼠标的位置转换?

[复制链接]
发表于 2003-4-23 11:18:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. 在CAD中如何动态适时得到鼠标的坐标?
2. 如何用API得到鼠标在Windows中的屏幕位置数值?
3. 该数值在CAD中如何转换?
4. 在CAD中如何判断鼠标位置?在菜单条区,在图标区等区域
上述问题可能重复,我主要目的是想在VBA中通过API函数来控制和检测鼠标的当前位置,实现程序中的某些功能。谢谢各位了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-4-23 11:57:44 | 显示全部楼层
先从第2个开始吧,API函数GetCursorPos可以返回鼠标在屏幕中的位置。
但是这个还不能解决问题,再用函数ScreenToClient将其坐标转化成相对于AutoCAD中当前文档的坐标吧。如何转化?传递当前文档的句柄给它,,ActiveDocument.Hwnd。
现在当前文档的鼠标位置有了,接下来呢,用系统变量VIEWCTR,VIEWSIZE,SCREENSIZE。这些系统变量怎么用?VIEWCTR是文档文档显示部分的中心点坐标,VIEWSIZE是当前文档显示部分的高度,它们的单位都是当前文档的坐标单位。知道了就可以求出左上角的坐标,为什么用左上角啊,因为窗口的坐标系原来在那儿。接着求出当前文档显示的宽度和高度吧,什么用处?看下面说明吧。SCREENSIZE是当前文档的以像素为单位的X坐标和Y坐标,而上面求出的鼠标位置(已经经过转换)与它的比例,再与当前文档显示的宽度和高度相乘,知道了鼠标与当前文档左上角的偏移距离了吗?
剩下的还有什么?动态,那么用API的钩子函数捕获吧,太麻烦?那么用定时器,每隔一定时间捕获一次。
其它的类似,祝你好运。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 10:48 , Processed in 0.182585 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表