Erstellt ein Dropdown Menü, Untermenü oder Shortcut Menü
#include <GuiMenu.au3>
_GUICtrlMenu_CreatePopup ( [$iStyle = $MNS_CHECKORBMP] )
$iStyle | [optional] Stile des Menüs. Es kann einer oder mehrere der folgende Werte sein: $MNS_AUTODISMISS - das Menü wird automatisch beendet, wenn sich die Maus für 10 Sekunden außerhalb des Menüs befindet $MNS_CHECKORBMP - Der gleiche Platz ist für das anzuhakende Feld und das Bitmap reserviert (Standard)) $MNS_DRAGDROP - Menüitems sind OLE drop Ziele oder drag Quellen $MNS_MODELESS - Menü ist formlos $MNS_NOCHECK - Es ist kein Platz links von einem Item für das anzuhakende Feld reserviert $MNS_NOTIFYBYPOS - Der Menüowner empfängt eine WM_MENUCOMMAND Nachricht anstelle von einer WM_COMMAND Nachricht für die Auswahl |
Erfolg: | das Handle zu dem oben erstellten Menü |
Fehler: | 0 |
Menüressourcen die mit einem Fenster verknüpft sind, werden automatisch wieder freigegeben. Falls das Menü nicht mit einem Fenster verknüpft ist, so muss eine Anwendung die Systemressourcen wieder freigeben bevor das Menü geschlossen wird.
Um die Ressourcen wieder freizugeben, ist _GUICtrlMenu_DestroyMenu() aufzurufen.
$MNS_NOTIFYBYPOS ist ein Menü-Header-Stil und hat keine Auswirkung, wenn er auf einzelne Untermenüs angewendet wird.
- - - - - - - - Erklärung der Controls - - - - - - - -
_GUICtrlMenu_CreateMenu, _GUICtrlMenu_DestroyMenu
Suche nach CreatePopupMenu in der MSDN Bibliothek.
#include <GUIConstantsEx.au3>
#include <GuiMenu.au3>
#include <WinAPIError.au3>
#include <WindowsConstants.au3>
Global Enum $e_idOpen = 1000, $e_idSave, $e_idInfo
Example()
Func Example()
; Erstellt eine GUI
GUICreate("Menu", 400, 300)
GUISetState(@SW_SHOW)
; Registriert eine benutzerdefinierte Funktion
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>Example
; Handle der WM_COMMAND Nachrichten
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $lParam
Switch $wParam
Case $e_idOpen
_WinAPI_ShowMsg("Öffnen")
Case $e_idSave
_WinAPI_ShowMsg("Speichern")
Case $e_idInfo
_WinAPI_ShowMsg("Info")
EndSwitch
EndFunc ;==>WM_COMMAND
; Handle der WM_CONTEXTMENU Nachrichten
Func WM_CONTEXTMENU($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $lParam
Local $hMenu
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_InsertMenuItem($hMenu, 0, "Öffnen", $e_idOpen)
_GUICtrlMenu_InsertMenuItem($hMenu, 1, "Speichern", $e_idSave)
_GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0)
_GUICtrlMenu_InsertMenuItem($hMenu, 3, "Info", $e_idInfo)
_GUICtrlMenu_TrackPopupMenu($hMenu, $wParam)
_GUICtrlMenu_DestroyMenu($hMenu)
Return True
EndFunc ;==>WM_CONTEXTMENU