» »

VB in miška koordinate

VB in miška koordinate

marco ::

Pozdrav!

Spodaj je program za VB, ki izpisuje koordinate x,y ,ko premikaš miško.
Koordinate izpisuje do tam kolikšno imam nastavljeno resolucijo zaslona, x=1024 y=767. To je vse OK.

Vprašanje:
Kako pa napisati kodo programa, da nebi bilo omejitve na resolucijo zaslona, da bi prikazoval koordinate še naprej naprimer x= max 10000,y= max 3000 ?

LP,marko



*******************************************************
Option Explicit

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim Koordinata As POINTAPI

Private Sub Form_Load()
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
GetCursorPos Koordinata
Label1.Caption = "x: " & Koordinata.X
Label2.Caption = "y: " & Koordinata.Y
End Sub

darkolord ::

Ko pride do roba, miško premakneš na sredo ekrana (al pa na drugi rob) in potem prištevaš/odštevaš koordinate

marco ::

Sem napravil tako, da premaknem kazalec.
Pride pa do problema, če miško premikam prehitro se kazalec ne vrne na določeno pozicijo, če pa premikam z določeno hitrostjo pa se IF stavek izvede.

Zgleda, da mu IF stavek in klic API funkcije vzame preveč časa.

Kaj storiti?

*******************************************************
'Popravljena koda

Option Explicit

Private Type POINTAPI
X As Long
Y As Long
End Type

'Deklaracija za premik kazalca po zaslonu
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

'Generalna Deklaracija za čitanje pozicije kurzorja_miške
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim Koordinata As POINTAPI

Private Sub Form_Load()
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
Dim X As Long, Y As Long, Lega As Long

GetCursorPos Koordinata
Label1.Caption = "x: " & Koordinata.X
Label2.Caption = "y: " & Koordinata.Y

'Tukaj premaknem kazalec
If Koordinata.X = 1000 Then
Lega = SetCursorPos(10, 10)
End If

End Sub
'***********************************************
LP,marko

darkolord ::

Namesto

Koordinata.X = 1000

daj vsaj

Koordinata.X > 1000

ali pa še bolje

If Koordinata.X > (screen.Width / screen.TwipsPerPixelX) - 50 Then

marco ::

-
darkolord hvala program deluje z koordinata.x > 1000.
Logično, ko enkrat veš je čisto enostavno.

LP,marko


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[VB6] Program Odštevalnik - verjetno preprosta rešitev ampak jest je ne najdem (strani: 1 2 )

Oddelek: Programiranje
515293 (4767) Nerdor
»

VB in kk dobit Ip od račnalnika

Oddelek: Programiranje
81217 (1051) alesrosina
»

API+VB

Oddelek: Programiranje
262115 (1819) webblod
»

Odpiranje dat.exe v VB

Oddelek: Programiranje
123014 (2807) webblod
»

Visual basic Progress bar

Oddelek: Programiranje
51578 (1511) Lunik

Več podobnih tem