Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GuiMenu.au3>
#include <Constants.au3>
#include <WinAPI.au3>
Global Enum $idOpen = 1000, $idSave, $idInfo, $idSelectAll
$hGUI = GUICreate("Test", 300, 200)
$Edit1 = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE))
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu, "Open", $idOpen)
_GUICtrlMenu_AddMenuItem($hMenu, "Save", $idSave)
_GUICtrlMenu_AddMenuItem($hMenu, "Info", $idInfo)
_GUICtrlMenu_AddMenuItem($hMenu,"")
_GUICtrlMenu_AddMenuItem($hMenu, "Undo", $WM_UNDO)
_GUICtrlMenu_AddMenuItem($hMenu,"")
_GUICtrlMenu_AddMenuItem($hMenu, "Cut", $WM_CUT)
_GUICtrlMenu_AddMenuItem($hMenu, "Copy", $WM_COPY)
_GUICtrlMenu_AddMenuItem($hMenu, "Paste", $WM_PASTE)
_GUICtrlMenu_AddMenuItem($hMenu,"")
_GUICtrlMenu_AddMenuItem($hMenu, "Select All", $idSelectAll)
GUISetState()
$wProcHandle = DllCallbackRegister("_WindowProc", "ptr", "hwnd;uint;wparam;lparam")
$wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($Edit1), $GWL_WNDPROC, DllCallbackGetPtr($wProcHandle))
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete($hGui)
DllCallbackFree($wProcHandle)
Func _WindowProc($hWnd, $Msg, $wParam, $lParam)
Switch $hWnd
Case GUICtrlGetHandle($Edit1)
Switch $Msg
Case $WM_CONTEXTMENU
_GUICtrlMenu_TrackPopupMenu($hMenu, $wParam)
Return 1
Case $WM_COMMAND
Switch $wParam
Case $WM_UNDO, $WM_CUT, $WM_COPY, $WM_CLEAR, $WM_PASTE
_SendMessage($hWnd, $wParam)
Case $idOpen
ConsoleWrite("-> Open" & @LF)
Case $idSave
ConsoleWrite("-> Save" & @LF)
Case $idInfo
ConsoleWrite("-> Info" & @LF)
Case $idSelectAll
_SendMessage($hWnd, $EM_SETSEL, 0, -1)
EndSwitch
EndSwitch
EndSwitch
Local $aRet = DllCall("user32.dll", "int", "CallWindowProc", "ptr", $wProcOld, _
"hwnd", $hWnd, "uint", $Msg, "wparam", $wParam, "lparam", $lParam)
Return $aRet[0]
EndFunc