#include-once #include Global $UDF_GUIRegisterMsg[0][2] Global $UDF_ListeRegisters[0] ;=============================================================================== ; Nom: _GUIRegisterMsg() ; Description: Associe un évenement à une fonction ; Paramètres: $hwnd : Message à associer ; $enable : Fonction associée ; ; Auteur: TommyDDR ;=============================================================================== Func _GUIRegisterMsg($msg, $fonction) ;Si la fonction n'a pas encore été register pour le message donné If(__GUIRegisterGetRegister($msg, $fonction) = -1) Then ;On ajoute la fonction et le message dans la liste __GUIRegisterAddMsg($msg) Local $numeroRegister = UBound($UDF_GUIRegisterMsg, 1) ReDim $UDF_GUIRegisterMsg[UBound($UDF_GUIRegisterMsg, 1)+1][UBound($UDF_GUIRegisterMsg, 2)] $UDF_GUIRegisterMsg[$numeroRegister][0] = $msg $UDF_GUIRegisterMsg[$numeroRegister][1] = $fonction EndIf EndFunc ;=============================================================================== ; Nom: _GUIRegisterMsg() ; Description: Supprimer l'association d'un évenement à une fonction ; Paramètres: $hwnd : Message à ne plus associer ; $enable : Fonction qui était associée ; ; Auteur: TommyDDR ;=============================================================================== Func _GUIUnRegisterMsg($msg, $fonction) Local $numero = __GUIRegisterGetRegister($msg, $fonction) ; Si la fonction associée au message existe If($numero >= 0) Then ; On la supprime de la liste __GUIRegisterDelRegister($numero) EndIf EndFunc Func __GUIRegisterAddMsg($msg) Local $idMsg = -1 ; On cherche si le message à déjà été register For $i = 0 To UBound($UDF_ListeRegisters, 1)-2 If($UDF_ListeRegisters[$i] = $msg) Then $idMsg = $i ExitLoop EndIf Next ; Si le message n'a pas encore été register If($idMsg = -1) Then Local $numeroRegister = UBound($UDF_ListeRegisters, 1) ReDim $UDF_ListeRegisters[UBound($UDF_ListeRegisters, 1)+1] $UDF_ListeRegisters[$numeroRegister] = $msg GUIRegisterMsg($msg, "__Func_GUIRegisterMsg") EndIf EndFunc Func __Func_GUIRegisterMsg($hWnd, $msg, $wParam, $lParam) Local $return = $GUI_RUNDEFMSG Local $returnBis For $i = 0 To UBound($UDF_GUIRegisterMsg, 1)-1 If($UDF_GUIRegisterMsg[$i][0] = $msg) Then $returnBis = Call($UDF_GUIRegisterMsg[$i][1], $hWnd, $msg, $wParam, $lParam) If($returnBis <> $GUI_RUNDEFMSG) Then $return = $returnBis EndIf EndIf Next Return $return EndFunc Func __GUIRegisterGetRegister($msg, $fonction) Local $retour = -1 For $i = 0 To UBound($UDF_GUIRegisterMsg, 1)-1 If($UDF_GUIRegisterMsg[$i][0] = $msg And $UDF_GUIRegisterMsg[$i][1] = $fonction) Then $retour = $i ExitLoop EndIf Next Return $retour EndFunc Func __GUIRegisterDelRegister($numero) For $i = $numero To UBound($UDF_GUIRegisterMsg, 1)-2 $UDF_GUIRegisterMsg[$i][0] = $UDF_GUIRegisterMsg[$i+1][0] $UDF_GUIRegisterMsg[$i][1] = $UDF_GUIRegisterMsg[$i+1][1] Next ReDim $UDF_GUIRegisterMsg[UBound($UDF_GUIRegisterMsg, 1)-1][UBound($UDF_GUIRegisterMsg, 2)] EndFunc