Übersicht
0001 Die Reihenfolge der Mausereignisse
Die meist benutzten Ereignisse bei der Programmierung von Steuerelementen sind mit Sicherheit die Mausereignisse. Da es hiervon einige gibt, kann es durchaus wichtig sein zu wissen, in welcher Reihenfolge sie auftreten. Wird ein Steuerelement mit der Maus angeklickt, so treten nacheinander folgende Ereignisse auf:
Beachten Sie also, dass bei einem Doppelklick das MouseUp-Ereignis zweimal auftritt und auch das normale Click-Ereignis abgearbeitet wird! Autor: ralf schlegel Stand: 01/2005 |
0002 Mauszeiger absolut aus- / einschalten
Bei der Programmierung von Bildschirmschonern oder Multimedia-Anwendungen, wie zum Beispiel Dia-Shows, kann es nützlich sein den Mauszeiger unsichtbar zu machen. Hierfür ist der API-Aufruf ShowCursor aus der "User32.dll" zuständig: bei Parameterübergabe von "False" wird der Zeiger ausgeschaltet, mit "True" wieder sichtbar. Doch Vorsicht: dummerweise zählt die Funktion intern die Anzahl der Aufrufe und zwar unabhängig von der Applikation, die sie benutzt. Wird ein Mauszeiger durch zwei Aufrufe der Funktion zweimal versteckt, so muss er auch zweimal aufgerufen werden, um wieder auf dem Bildschirm zu erscheinen! Mit der benutzerdefinierte Routine ShowMouseCursor können Sie den Mauszeiger sicher aus bzw. wieder einschalten. Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As long) As Long Sub ShowMouseCursor (ByVal mode As Boolean) If mode Then Do While ShowCursor(True) <= 0 Loop Else Do While ShowCursor(False) >= 0 Loop End If End Sub Autor: ralf schlegel Stand: 04/2005 |
0003 Multimedia-Tastatur nutzen
Sie wollen die Multimedia-Tasten Ihres Keyboards im eigenen Programm nutzen und wissen nicht wie? Nun, als VB6 entwickelt wurde waren solche erweiterten Tastaturen noch Zukunftsmusik. Fügen Sie dazu folgenden Code in ein Basic-Modul ein: Public Const vbMMKeyNext As Integer = &HB0 ' Vorwärts Public Const vbMMKeyPrev As Integer = &HB1 ' Zurück Public Const vbMMKeyStop As Integer = &HB2 ' Stopp Public Const vbMMKeyPlay As Integer = &HB3 ' Wiedergabe/Pause Setzen Sie in der Form, die die Tasten unterstützen soll, die Eigenschaft 'KeyPreview' auf 'True' Fügen Sie folgenden Code in die KeyUp-Methode Ihrer Form ein: Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbMMKeyStop ' Multimedia: Stopp Case vbMMKeyPlay ' Multimedia: Wiedergabe Case vbMMKeyNext ' Multimedia: nächster Titel (vorwärts) Case vbMMKeyPrev ' Multimedia: vorheriger Titel (zurück) End Select End Sub Die Leerzeilen nach den Case-Abfragen müssen natürlich mit Ihren eigenen Funktionsaufrufen gefüllt werden! Das muß nicht unbedingt der 1000. CD-Player sein, den keiner mehr braucht! Denkbar wäre auch die Navigation einer Diashow, oder Ähnliches... Autor: ralf schlegel |
0004 Shiftstatus korrekt abfragen
Manchmal ist es erforderlich den Status der Shifttasten (Shift, Ctrl, Alt) zu kennen, um im Programmablauf fortzufahren. Viele Programmierer nutzen dazu die API Funktion "GetAsyncKeyState" und wundern sich, warum diese nicht immer korrekt arbeitet. Das liegt i.d.R. daran, dass sie falsch aufgerufen wird! Hier ein Beispiel, wie es richtig geht. Fügen Sie folgenden Code in ein Basic-Modul ein: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As KeyCodeConstants) As Integer Public Function getShiftState() As ShiftConstants getShiftState = (-vbShiftMask * shKeyPressed(vbKeyShift)) getShiftState = getShiftState Or (-vbAltMask * shKeyPressed(vbKeyMenu)) getShiftState = getShiftState Or (-vbCtrlMask * shKeyPressed(vbKeyControl)) End Function Private Function shKeyPressed(ByVal nVirtKeyCode As KeyCodeConstants) As Boolean shKeyPressed = (GetAsyncKeyState(nVirtKeyCode) And &H8000& = &H8000&) End Function Nun können Sie den Status folgendermaßen abfragen: If getShiftState = vbCtrlMask Then ' mache irgendwas Else ' abbrechen End If Autor: ralf schlegel |