[R] Evénement _GUICtrlHeader_*

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

[R] Evénement _GUICtrlHeader_*

#1

Message par matwachich »

Salut!

Question simple:
J'aimerai utiliser _GUICtrlHeader_, c'est bien joli!
Mais comment faire pour détecter un click sur un _GUICtrlHeader_AddItem???

J'ai décortiquer l'aide, je trouve pas!

MERCI
Modifié en dernier par matwachich le sam. 22 janv. 2011 12:58, modifié 1 fois.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Evénement _GUICtrlHeader_*

#2

Message par Tlem »

Il n'y a pas de fonction intégrée, vous allez devoir passer par l'utilisation d'un GUIRegisterMsg afin de détecter l'événement.

Regargez l'exemple de _GUICtrlListView_Create. Il est suffisamment complet pour vous occuper un moment. :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Evénement _GUICtrlHeader_*

#3

Message par matwachich »

Pourquoi l'exemple de _GUICtrlListView_Create alors qu'il y'en a déjà un pour _GUICtrlHeader_Create!
En effet, c'est un peut plus compliqué! mais j'y arrive!
Voici mon embryon de solution (je n'y ai laisser que la gestion du simple clique)

Code : Tout sélectionner

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiHeader.au3>
#Include <GuiImageList.au3>

#region - GUI Create
$gui = GUICreate('Test',400,300)
$hHeader = _GUICtrlHeader_Create($gui, BitOR($HDS_BUTTONS, $HDS_HOTTRACK))
GUISetState()
#endregion

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

$hImgList = _GUIImageList_Create(16, 16, 5, 0, 1, 10)
_GUIImageList_AddIcon($hImgList, @SystemDir & "\shell32.dll", 238)
_GUIImageList_AddIcon($hImgList, @SystemDir & "\shell32.dll", 131)
_GUIImageList_AddIcon($hImgList, @SystemDir & "\shell32.dll", 160)
_GUICtrlHeader_SetImageList($hHeader, $hImgList)

_GUICtrlHeader_AddItem($hHeader, "Refresh", 100, 2, 0)
_GUICtrlHeader_AddItem($hHeader, "Disconnect", 100, 2, 1)
_GUICtrlHeader_AddItem($hHeader, "Identify", 100, 2, 2)

#region - GUI SelectLoop
While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
#endregion

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode
    Local $tNMHDR, $tNMHEADER, $tNMHDFILTERBTNCLICK, $tNMHDDISPINFO

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hHeader
            Switch $iCode
                Case $HDN_ITEMCLICK, $HDN_ITEMCLICKW ; Notifies a header control's parent window that the user clicked the control
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ITEMCLICK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; no return value
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+======================================================" & @LF & _
            "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Evénement _GUICtrlHeader_*

#4

Message par Tlem »

matwachich a écrit :Pourquoi l'exemple de _GUICtrlListView_Create alors qu'il y'en a déjà un pour _GUICtrlHeader_Create!
Effectivement. Je n'avais pas regardé, mais c'est l'intention qui compte ... :roll:

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre