Linksklick simulieren

Hey

ich habe folgendes Problem:
Ich hab ein SSTab - Objekt und möchte für jeden
Reiter ein eigenes Kontextmenü anzeigen.
Das bedeutet ich muss, wenn rechtsgeklickt wird,
einen virtuellen Linksklick ausführen, damit
der Reiter ausgewählt wird, welcher sich unter
dem Mauszeiger befindet.

Ich hab das einfach mit der click-Funktion versucht,
also quasi

Private Sub SSTab1_MouseUp(Button as Integer, Shift as Integer, X as Single, Y as Single)
if Button = 2 then
SSTab1_Click 0

Anweisungen

end if
end sub

Man kann bei der Click-Funktion noch den Wert PreviousTab angeben, welcher für meine Zwecke aber völlig egal ist.

Das Problem ist nun:
Bei dieser Reihenfolge springt das Programm erst bei Punkt 4 rein, was vollkommen logisch ist. Nur Frage ich mich, wie ich bei Punkt 1 beginnen kann:

  1. Linksklick
  2. Tab springt um
  3. Click-Ereignis wird ausgelöst
  4. OnClick-Funktion wird ausgeführt

Vielen Dank im Vorraus.
Hendrik

Hallo,

Ich hab ein SSTab - Objekt und möchte für jeden
Reiter ein eigenes Kontextmenü anzeigen.
Das bedeutet ich muss, wenn rechtsgeklickt wird,
einen virtuellen Linksklick ausführen,

nein. Einen Mausklick zu simulieren ist nur in ganz seltenen Fällen eine gute Idee.

Du möchtest ja nur einen anderen Tab sichtbar schalten, das geht mit

SSTab1.Tab = n

ganz einfach und ohne Mausklick. So bleibt das Programm auch stabil.

Trotzdem noch den Code, wie Du einen Mousecklick simulieren kannst.
Wenn Du das aber in Deinem Programm verwendest, verrate nicht, daß Du den Code von mir hast. :smile:

Option Explicit

Private Declare Sub mouse\_event Lib 'user32' \_
 (ByVal dwFlags As Long, ByVal dx As Long, \_
 ByVal dy As Long, ByVal cButtons As Long, \_
 ByVal dwExtraInfo As Long)

Const MOUSEEVENTF\_LEFTDOWN = &H2
Const MOUSEEVENTF\_LEFTUP = &H4

Private Sub SSTab1\_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 If Button = 2 Then
 mouse\_event MOUSEEVENTF\_LEFTDOWN Or MOUSEEVENTF\_LEFTUP, 0&, 0&, 1&, 0&
 End If
End Sub

Gruß, Rainer