Omezení pohybu myši   zodpovězená otázka

VB6/VBA

ahoj, poraďte prosím, jak uzavřít pohyb myši ve VB6, aby se hýbala pouze ve formuláři. Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přesně tato problematika se na tomto fóru už řešila. Byla zde ukázka jak to pomocí API funckí vyřešit. Zkuste prohledat starší příspěvky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nebo se zeptat googlu, na (první a poslední odzkoušený) dotaz "restrict mouse to area" mi našel kupu řešení, hodně i ve vB (podle nadpisu či URL) :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dejte do Form1 tlačítko Command1 a zkuste:

Option Explicit
  Private Type POINTAPI
    X As Long
    Y As Long
  End Type
    
  Private Type RECT
    left As Long
    top As Long
    right As Long
    bottom As Long
  End Type

  Private Declare Sub ClipCursorRect Lib "user32" Alias "ClipCursor" (lpRect As RECT)
  Private Declare Sub ClipCursorClear Lib "user32" Alias "ClipCursor" (ByVal lpRect As Long)
  Private Declare Function ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
    
  Private Sub Form_Load()
    Command1.Caption = "Zamkni myš"
  End Sub
  
  Public Sub ZamkniMys(ByVal lLeft As Long, ByVal lTop As Long, _
      ByVal lWidth As Long, ByVal lHeight As Long, _
      Optional ByRef oPositionTo As Object = Nothing)

    Dim tR As RECT
    Dim tP As POINTAPI
    
    ' převod twip na pixel
    tR.left = lLeft \ Screen.TwipsPerPixelX
    tR.top = lTop \ Screen.TwipsPerPixelY
    tR.right = (lLeft + lWidth) \ Screen.TwipsPerPixelX
    tR.bottom = (lLeft + lHeight) \ Screen.TwipsPerPixelY
    
    'zkontroluje volitelný parametr
    If oPositionTo Is Nothing Then Set oPositionTo = Screen
    If Not oPositionTo Is Screen Then
      tP.X = tR.left
      tP.Y = tR.top
      ClientToScreen oPositionTo.hWnd, tP
      tR.left = tP.X
      tR.top = tP.Y
      tP.X = tR.right
      tP.Y = tR.bottom
      ClientToScreen oPositionTo.hWnd, tP
      tR.right = tP.X
      tR.bottom = tP.Y
    End If
    ClipCursorRect tR
  End Sub

  Public Sub OdemkniMys()
    ClipCursorClear 0
  End Sub

  Private Sub Command1_Click()
    If Command1.Caption = "Zamkni myš" Then
      Command1.Caption = "Odemkni myš"
      ZamkniMys 0, 0, Form1.ScaleWidth, Form1.ScaleHeight, Form1
    Else
      Command1.Caption = "Zamkni myš"
      OdemkniMys
    End If
  End Sub


nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback