- Offizieller Beitrag
Servus, hatte nach einer Funktion gesucht um den slektierten Menüeintrag herauszubekommen und einen Hilfetext in der Statusbar anzuzeigen.
Nach Stöbern in MSDN bin ich dann auf WM_MENUSELECT gestoßen und habe ein Beispielsscript dazu geschrieben.
Eventuell kann es ja ausser mir auch jemand gebrauchen.
Spoiler anzeigen
#include <GuiMenu.au3>
#include <GuiStatusBar.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Const $MF_BYCOMMAND = 0x0
$hGui = GUICreate('Test', 400, 300)
Global $ahMenuItems[3]
$hMenu = GUICtrlCreateMenu('File')
$ahMenuItems[0] = GUICtrlCreateMenuItem('bla1', $hMenu)
$ahMenuItems[1] = GUICtrlCreateMenuItem('bla2', $hMenu)
$ahMenuItems[2] = GUICtrlCreateMenuItem('bla3', $hMenu)
$hStatus = _GUICtrlStatusBar_Create($hGui)
GUISetState()
GUIRegisterMsg($WM_MENUSELECT, "WM_MENUSELECT")
Do
Until GUIGetMsg() = -3
Func WM_MENUSELECT($hwnd, $iMsg, $iwParam, $ilParam)
Local $menuId, $aResult
$menuId = BitAND($iwParam, 0xFFFF)
$aResult = DllCall("User32.dll", "int", "GetMenuString", "hwnd", $ilParam, "int", $menuId, "str", 0, "int", 4096, "int", $MF_BYCOMMAND)
If $menuId = 0 And $ilParam = 0x000000 Then Return ConsoleWrite("Menüleiste wurde geschlossen" & @CRLF)
Switch $aResult[3]
Case "bla1"
_GUICtrlStatusBar_SetText($hStatus,"Menüeintrag bla1 wurde gewählt")
Case "bla2"
_GUICtrlStatusBar_SetText($hStatus,"Menüeintrag bla2 wurde gewählt")
Case "bla3"
_GUICtrlStatusBar_SetText($hStatus,"Menüeintrag bla3 wurde gewählt")
Case ""
_GUICtrlStatusBar_SetText($hStatus, '')
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_MENUSELECT