我一直在搜索这个,我仍然有一些问题。我的最终目标是为PowerPoint创建一个加载项,允许我创建类似于CAD包的维度。我正在Excel中开发它,因为我可以在Excel VBA上找到更多文档。
我的主要问题,正如标题所暗示的那样,是关于获取绘制实际尺寸的屏幕位置,但欢迎任何关于我想要完成的其他方面的反馈。
问题:
绘制线条的VBA方法是Shapes.AddLine(beginX, beginY, endX, endY)
。 X-Y坐标相对于文档本身的左上角。
我在http://www.mrexcel.com/forum/excel-questions/173120-mouse-events-visual-basic-applications.html找到了以下内容:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Sub PositionXY()
Dim lngCurPos As POINTAPI
Do
GetCursorPos lngCurPos
Range("A1").Value = "X: " & lngCurPos.x & " Y: " & lngCurPos.y
DoEvents
Loop
End Sub
执行以下操作:
...如果您有兴趣查看单元格中的坐标 一个恒定的基础,例如在单元格A1中,运行名为PositionXY的宏 并移动鼠标。
要退出程序,请双击任何单元格,然后点击Esc, 输入,或选择任何单元格。
问题是POINTAPI方法获取绝对屏幕位置。
有更好的方法吗?我使用双显示器,POINTAPI似乎返回相对于主显示器左上角的位置......我想找到一种方法,如果可能的话我不必担心这个。
谢谢。
答案 0 :(得分:0)
方法ActiveWindow.PointsToScreenPixelsX(0)
和ActiveWindow.PointsToScreenPixelsY(0)
解决了提出的问题。
我需要帮助的项目更多,但他们需要更多的研究和他们自己的问题。谢谢。