vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ActiveX-Programmierung
So könnte es gehen: 
Autor: unbekannt
Datum: 14.06.01 16:07

Hi Roman


Der nachfolgende Code ist allerdings nicht getestet:


Wenn also ein Anwender die Fläche Deines Control verläßt und etwas anderes anklickt - dann hier ein einfacher Vorschlag:

Setz den Mauszeiger auf Dein Control und verhindere, dass der Anwender den Mauspfeil aus Deinem Control ziehen kann, solange nicht die gewünschte Aktion eingetreten ist.

Dazu werden WinAPI-Funktionen benötigt.


1. Müssen wir wissen, auf welcher Screenposition sich das Control befindet


2. Müssen wir den Mauspfeil auf diesen ermittelten Bereich "einfrieren", d.h., der Mauspfeil kann nur nur in dem vom UserControl eingenommenen Bildschirmbereich bewegt werden.


Wir schreiben im allgemeinen Teil des Usercontrol:


Private Declare Function GetClientRect Lib "user32" _
   (Byval hwnd As Long, _
    lpRect As Rect) As Long
 
Private Declare Function ClipCursor Lib "user32" _
   (lpRect As Any) As Long
 
Private Declare Function ClientToScreen Lib "user32" _
   (Byval hwnd As Long, _
    lpPoint As POINTAPI) As Long
 
Private Type Rect
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type
 
Private Type POINTAPI
   x As Long
   y As Long
End Type
 
Private Sub UserControl_Initialize()
   'Mauszeiger auf die Innenfläche des Controls fixieren
   Dim ctrlFlaeche As Rect
   Dim ctrlPoints As POINTAPI
   Dim RVal As Long
   With UserControl
      ctrlPoints.X = .Left
      ctrlPoints.Y = .Top
      RVal = ClientToScreen(.Containerhwnd, ctrlPoints)
      RVAl = GetClientRect(.hwnd, ctrlFlaeche)
   End With
   With ctrlFlaeche
      .Left = ctrlPoints.X
      .Top = ctrlPoints.Y
      .Bottom = .Bottom + .Top
      .Right = .Right + .Left
   End With
   RVal = ClipCursor(ctrlFlaeche)
End Sub
 
Private Sub UserControl_Terminate()
   'Mauszeiger wieder freigeben
   Dim ctrlFlaeche As Rect
   Dim RVal As Long
   With ctrlFlaeche
      .Top = 0
      .Left = 0
      .Bottom = Screen.Height / Screen.TwipsPerPixelY
      .Right = Screen.Width / Screen.TwipsPerPixelX
   End With
   RVal = ClipCursor(ctrlFlaeche)
End Sub
cu

Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
UserControl darf Fokus nicht abgeben211Roman Lorenz11.06.01 21:22
Ohne Dein Control näher zu kennen:930unbekannt11.06.01 21:54
Re: Ohne Dein Control näher zu kennen:169Roman Lorenz12.06.01 10:11
So könnte es gehen:977unbekannt14.06.01 16:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel