Appelle le gestionnaire suivant dans une chaîne de sous-classe de fenêtre
#include <WinAPIShellEx.au3>
_WinAPI_DefSubclassProc ( $hWnd, $iMsg, $wParam, $lParam )
$hWnd | Handle de la fenêtre sous-classée. |
$iMsg | Le message à envoyer. |
$wParam | Les informations spécifiques au message. |
$lParam | Les informations spécifiques au message. |
Retourne la valeur retournée spécifique au message envoyé.
Le dernier gestionnaire dans la chaîne de sous-classe est la procédure de fenêtre initiale pour la fenêtre spécifiée.
Vous n'avez pas besoin d'appeler la procédure de fenêtre par défaut; cette fonction l'appelle automatiquement.
Consultez DefSubclassProc dans la librairie MSDN.
#include <Extras\WMDebug.au3> #include <GUIConstantsEx.au3> #include <WinAPIShellEx.au3> OnAutoItExitRegister('OnAutoItExit') ; Crée une GUI Global $g_hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()')) ; Enregistre une fonction de rappel DLL qui sera utilisée en tant que procédure de sous-classe de fenêtre Global $g_hDll = DllCallbackRegister('_SubclassProc', 'lresult', 'hwnd;uint;wparam;lparam;uint_ptr;dword_ptr') Global $g_pDll = DllCallbackGetPtr($g_hDll) ; Installe le rappel de la sous-classe de fenêtre _WinAPI_SetWindowSubclass($g_hForm, $g_pDll, 1000, 0) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func _SubclassProc($hWnd, $iMsg, $wParam, $lParam, $iID, $pData) #forceref $iID, $pData ; Déclarée dans WMDebug.au3 _WM_Debug($hWnd, $iMsg, $wParam, $lParam) Return _WinAPI_DefSubclassProc($hWnd, $iMsg, $wParam, $lParam) EndFunc ;==>_SubclassProc Func OnAutoItExit() _WinAPI_RemoveWindowSubclass($g_hForm, $g_pDll, 1000) DllCallbackFree($g_hDll) EndFunc ;==>OnAutoItExit