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 |