Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Workshops / SubClassing / Analyse

Analyse: Was hätte ich gern?

Natürlich ist das obige Beispiel nicht umfassend genug, um es in der Produktion einsetzen zu können. Es wäre ziemlich aufwendig, für jedes "auszuspionierende" Windows-Objekt extra ein BAS-Modul hinzufügen zu müssen. Außerdem ist die Benutzung nicht gerade intuitiv und insgesamt äußerst fehlerträchtig. Daher soll nun eine wiederverwendbare Komponente erstellt werden, bei welcher die genannten Schwachstellen entfallen.

Hier ein Beispiel, wie m.E. ein intuitives SubClassing aussehen sollte: In Form_Load möchte ich nur sagen müssen, welches Objekt auf welche Nachrichten untersucht werden soll (natürlich sollten möglichst viele Messagetypen vordefiniert sein):
Private Sub Form_Load()
  Set Msg = New MsgHook 'SubClassing initialisieren
  Msg.Hook Me.hWnd, WM_ACTIVATEAPP, WM_MOVING
End Sub
Vor Abarbeitung der betreffenden Nachricht durch den ursprünglichen Empfänger, soll mir Bescheid gegeben werden, etwa so:
Private Sub Msg_Before(uMsg As Long, wParam As Long, _
    lParam As Long, retVal As Long)
  Beep 'oder was sinnvolles...   ;-)
End Sub
Wenn ich uMsg=0 setze, soll die Nachricht gar nicht an den ursprünglichen Empfänger weitergeleitet werden! Ebenso möchte ich auch nach Abarbeitung einer Nachricht informiert werden:
Private Sub Msg_After(uMsg As Long, wParam As Long, _
    lParam As Long)
  'irgendwas...
End Sub
Das Objekt, was für mich die ganze Arbeit mit dem SubClassing erledigt, sollte möglichst einfach deklariert werden können:
Private WithEvents Msg As MsgHook 'SubClassing deklarieren
Und natürlich sollte alles beliebig oft und sicher verwendbar sein.
...>>

© Jost Schwider, 29.04.2000-30.04.2000 - http://vb-tec.de/subclas4.htm