UDF > WinAPIEx > ShellEx >


_WinAPI_SetWindowSubclass

Installe ou met à jour une sous-classe de fenêtre de rappel

#include <WinAPIShellEx.au3>
_WinAPI_SetWindowSubclass ( $hWnd, $pSubclassProc, $idSubClass [, $pData = 0] )

Paramètres

$hWnd Handle de la fenêtre en cours de sous-classement.
$pSubclassProc Un pointeur sur une procédure fenêtre. Ce pointeur et l'ID de sous-classe identifient de manière unique cette sous-classe de rappel.
(Voir MSDN pour plus d'informations)
$idSubClass L'ID de la sous-classe.
$pData [optionnel] Les données de référence. Cette valeur est transmise à la procédure de la sous-classe. La signification de cette valeur est déterminée par l'application appelante.

Valeur de retour

Succès: Retourne True.
Échec: Retourne False.

Remarque

Les sous-classes de rappel sont identifiées par la combinaison de l'adresse de rappel et l'ID de la sous-classe défini par l'appelant.
Si la paire adresse de rappel et ID n'ont pas encore été installée, alors cette fonction installe la sous-classe, sinon, cette fonction met simplement à jour les données de référence.

Voir aussi

Consultez SetWindowSubclass dans la librairie MSDN.

Exemple

#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