Тема: Определение координаты курсора

Привет,
Нужно через определенные интервалы времени, определять координату положения курсора на экране (чертежа).
Из строки состояния, например, это можно вытащить?
Спасибо,

Re: Определение координаты курсора

Код разработан на основе алгоритма предложенного Александром Ривилисом:

Option Explicit
Type POINTAPI
    X   As Long
    Y   As Long
End Type
Type rect
     Left As Long
     Top As Long
     Right As Long
     Bottom As Long
End Type
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As rect) As Long
Sub CursorPos()
    Dim retValue As Long
    Dim CursorLoc As POINTAPI
    retValue = GetCursorPos(CursorLoc)
    Dim vHWND As Long
    If Documents.Count = 0 Then
        MsgBox "There are no open documents!"
        Exit Sub
    End If
    vHWND = ActiveDocument.hwnd
    Dim vRect As rect
    Dim SizeOfScreen As Variant
    SizeOfScreen = ThisDrawing.GetVariable("SCREENSIZE")
    vRect.Right = SizeOfScreen(0)
    vRect.Bottom = SizeOfScreen(1)
    retValue = ScreenToClient(ByVal vHWND, CursorLoc)
    Dim HeightScreen As Long
    HeightScreen = ThisDrawing.GetVariable("VIEWSIZE")
    Dim WidthScreen As Long
    WidthScreen = HeightScreen * vRect.Right / vRect.Bottom
    Dim ÑenterScreen As Variant
    ÑenterScreen = ThisDrawing.GetVariable("VIEWCTR")
    Dim X0 As Double
    Dim Y0 As Double
    X0 = ÑenterScreen(0) - WidthScreen / 2
    Y0 = ÑenterScreen(1) - HeightScreen / 2
    Dim K_Coord_ScreenToWCS As Single
    K_Coord_ScreenToWCS = HeightScreen / vRect.Bottom
    Dim X_CursorPos As Double
    Dim YCursorPos As Double
    X_CursorPos = X0 + K_Coord_ScreenToWCS * CursorLoc.X
    YCursorPos = Y0 + (HeightScreen - K_Coord_ScreenToWCS * CursorLoc.Y)
    MsgBox "X = " & X_CursorPos & vbCrLf & "Y = " & YCursorPos
End Sub

Re: Определение координаты курсора

> LeonidSN
Спасибо,
Я искал, честно слово.
Наблюдается расхождение, но менее 1 единицы чертежа.

Re: Определение координаты курсора

> Vildar
Наблюдается расхождение...
Думаю, это может быть связано с недостаточной точностью вычислений. Оператор деления  "/"  в VB(VBA) работает ненадежно.
Мне в свое время для вычисления точного значения остатка от деления пришлось запускать собственный цикл, что-то в этом духе:

Do
   Ortho_Line = Ortho_Line - SpF4 * 100
   D_SpF4 = Ortho_Line
   N_Rows = N_Rows + 1
Loop Until (D_SpF4 < SpF4 * 100)

Вариант номер два - использовать для вычислений специализированную библиотеку в виде MS Script Control'а (msscript.ocx), например:

Dim scr As New ScriptControl
scr.Language = "VBScript"
-------------------------
Result = scr.Eval(exp)

exp - вычисляемое выражение