Ich möchte ein Fenster (400x400) mit der Maus auch im Clientbereich bewegen lassen. Es gibt mehrere Möglichkeiten:
1.
GUIRegisterMsg($WM_NCHITTEST, "_Touch")
Func _Touch($nWnd, $iMsg, $iwParam, $ilParam)
if ($nWnd = $hGUI) and ($iMsg = $WM_NCHITTEST) then Return $HTCAPTION
EndFunc
2.
[autoit]GUICreate("Menu", 400, 300,-1,-1,-1,$GUI_WS_EX_PARENTDRAG)
GUICtrlCreateLabel("",0,0,1000,1000,-1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState()
Diese Methoden funktionieren alleinstehend gut, jedoch möchte ich auch ein Popupmenü einfügen und nun funktionieren die GUIRegisterMsg des PopupMenüs nicht mehr und werden auch nicht aufgerufen!
Beispiel
#include
#include
#include
#include
Global Enum $idOpen = 1000, $idSave, $idInfo
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Menu", 400, 300,-1,-1,-1,$GUI_WS_EX_PARENTDRAG)
GUICtrlCreateLabel("",0,0,1000,1000,-1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState()
; Register message handlers
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ;funktioniert
GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU"); funktioniert nicht
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Handle WM_COMMAND messages
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch $iwParam
Case $idOpen
_WinAPI_ShowMsg ("Open")
Case $idSave
_WinAPI_ShowMsg ("Save")
Case $idInfo
_WinAPI_ShowMsg ("Info")
EndSwitch
EndFunc ;==>WM_COMMAND
; Handle WM_CONTEXTMENU messages
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
Local $hMenu
$hMenu = _GUICtrlMenu_CreatePopup ()
_GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Open", $idOpen)
_GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Save", $idSave)
_GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
_GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Info", $idInfo)
_GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
_GUICtrlMenu_DestroyMenu ($hMenu)
Return True
EndFunc ;==>WM_CONTEXTMENU
Ich hoffe jemand weiß ein Antwort auf dieses Fenomen! ![]()