VB-Homepage Tipp 119

MSGHOOK - Statuszeileninfo für Menüeintrage

Natürlich hatte auch ich die Msghook.vbx schon in der Hand, auch mit dazugehörigen Projekten, aber so richtig wollte mir der Nutzen dieser VBX einfach nicht begreiflich werden.
Dies hat sich nun um einiges geändert.
Denn dieses mal hatte ich ein paar Projekte die sich mit dieser VBX beschäftigten in der Hand, die wirklich nachvollziehbar waren und ich einige, meineserachtens, recht nützliche Funktionen entdecken konnte.
Diese möchten ich Ihnen natürlich nicht vorenthalten.

Deshalb, will ich auch, entgegen sonstiger Gewohnheit, diese VBX hier gleich anhand von Praxisbeispielen vorstellen.

Die Nutzung der VBX ist kostenfrei.

Das Sie über eine Statuszeile Informationen zu Funktionen / Schaltflächen / Eingabefeldern u.s.w. ausgeben können, das ist sicher bekannt.
(Ansonsten gibts bestimmt einen Tipp dazu)
Aber wie können Sie nun über diese Statuszeile Informationen ausgeben, wenn der User einen Menüpunkt auswählt.

Mir zumindestens, war bisher keine Möglichkeit bekannt, dies allein durch die Vorauswahl eines Menüpunkts irgendeinen Returncode auszuwerten, der mir sagt, über welchem Menüpunkt der User gerade steht.
Eben hier setzt die Msghook.vbx an, die sich zwischen Software und System setzt und die Informationen abfängt, an die man sonst nicht so ohne weiteres heran kommt.

menusel.mak
MENUSEL.FRM
MSGHOOK.VBX
ProjWinSize=258,458,261,215
ProjWinShow=2
IconForm="Form1"
Title="Menüinfo"
ExeName="MENUSEL.EXE"

menusel.frm
VERSION 2.00
Begin Form Form1
Caption = "VB-Homepage Tipp"
ClientHeight = 1755
ClientLeft = 1350
ClientTop = 2445
ClientWidth = 6405
Height = 2445
Left = 1290
LinkTopic = "Form1"
ScaleHeight = 1755
ScaleWidth = 6405
Top = 1815
Width = 6525
Begin MsgHook MsgHook
Left = 120
Top = 120
End
Begin Label Label2
Alignment = 2 'Center
Caption = "Auswerten der Auswahl von Menüeinträgen und Anzeige einer Info über die Statusbar"
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
Height = 255
Left = 120
TabIndex = 2
Top = 1080
Width = 6135
End
Begin Label Label1
Caption = "Orginal von : Jonathan Wood && Karl Peterson"
Height = 255
Left = 2040
TabIndex = 1
Top = 240
Width = 4095
End
Begin Label lblStatusBar
BackColor = &H00C0C0C0&
BorderStyle = 1 'Fixed Single
Caption = "lblStatusBar"
Height = 255
Left = 720
TabIndex = 0
Top = 120
Width = 3495
End
Begin Menu mnuFile
Caption = "&File"
Begin Menu mnuFileExit
Caption = "E&xit"
End
End
Begin Menu mnuEdit
Caption = "&Edit"
Begin Menu mnuArray
Caption = "Cu&t"
Index = 1
Shortcut = ^X
End
Begin Menu mnuArray
Caption = "&Copy"
Index = 2
Shortcut = ^C
End
Begin Menu mnuArray
Caption = "&Paste"
Index = 3
Shortcut = ^V
End
Begin Menu mnuArray
Caption = "&Delete"
Index = 4
Shortcut = {DEL}
End
End
End
Option Explicit
Const WM_MENUSELECT = &H11F
Dim DefaultText As String
Sub Form_Load ()
' Anweisung für VBX
MsgHook.HwndHook = Me.hWnd
MsgHook.Message(WM_MENUSELECT) = True
' Anzeige der Statusbar nach dem Start
DefaultText = "Bereit"
lblStatusBar = DefaultText
End Sub
Sub Form_Resize ()
' Anzeige Statusbar der Formgröße anpassen
lblStatusBar.Move 0, ScaleHeight - lblStatusBar.Height, ScaleWidth
End Sub
Sub mnuArray_Click (Index As Integer)
' Da es nicht um Funktionen geht, gibt es hier nur eine Msgbox
MsgBox "Keine Funktion verfügbar", 64, "Menühilfe"
End Sub
Sub mnuFileExit_Click ()
Unload Me
Set form1 = Nothing
End
End Sub
Sub MsgHook_Message (msg As Integer, wParam As Integer, lParam As Long, result As Long)
Dim txtStatus As String
'hier wird die Ausgabe definiert
If msg = WM_MENUSELECT Then
Select Case wParam
Case 0
txtStatus = DefaultText
Case 2
txtStatus = "Programm beenden"
Case 4
txtStatus = "Ausschneiden und Kopieren in die Zwischenablage"
Case 5
txtStatus = "Kopieren in die Zwischenablage"
Case 6
txtStatus = "Einfügen aus der Zwischenablage"
Case 7
txtStatus = "Löschen"
Case Else
txtStatus = ""
End Select
lblStatusBar = txtStatus
result = 0
End If
End Sub

Wenn Sie diesen Tipp nutzen möchten, erstellen Sie mit einem Editor
Dateien die Sie wie angegeben benennen und fügen den Code ein.
Desweiteren benötigen Sie die MSGHOOK.VBX, die Sie in Ihr Windows/System Verzeichnis kopieren.

Tipp-Download

Quelle : J.Wood & K.Peterson

Zurück zur Übersichtsseite