Forum » Programiranje » 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
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
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
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
darkolord hvala program deluje z koordinata.x > 1000.
Logično, ko enkrat veš je čisto enostavno.
LP,marko
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [VB6] Program Odštevalnik - verjetno preprosta rešitev ampak jest je ne najdem (strani: 1 2 )Oddelek: Programiranje | 5293 (4767) | Nerdor |
» | VB in kk dobit Ip od račnalnikaOddelek: Programiranje | 1217 (1051) | alesrosina |
» | API+VBOddelek: Programiranje | 2115 (1819) | webblod |
» | Odpiranje dat.exe v VBOddelek: Programiranje | 3014 (2807) | webblod |
» | Visual basic Progress barOddelek: Programiranje | 1578 (1511) | Lunik |