Page 1 sur 1

[R] Click droit sur element d'un GUICtrlCreateListView

Posté : dim. 28 févr. 2010 13:57
par Vins83
Bonjour à tous, malgré quelques recherches, je n'ai trouvé de réponses approprié.

Le titre dit tous. lors d'un GUICtrlCreateListView en prenant l'exemple autoit, je cherche a introduire une commande pour afficher x information lors d'unn click droit dessus.

exemple autoit :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

    GUICreate("listview items", 220, 180, 100, 200, -1, $WS_EX_ACCEPTFILES)
    GUISetBkColor(0x00E0FFFF)  ; will change background color

    $listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    $item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    $item3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)
    GUISetState()
    GUICtrlSetData($item2, "ITEM1")
    GUICtrlSetData($item3, "||COL33")
    GUICtrlDelete($item1)

    Do
        $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
 
Cordialement

Re: [..] Click droit sur element d'un GUICtrlCreateListView

Posté : dim. 28 févr. 2010 21:53
par tatane
Bonjour,

Je ne suis pas un expert mais je pense que tu vas devoir utiliser ceci pour détecter le clic droit (pour l'affichage du menu contextuel je ne sais pas) :
► Afficher le texte
Regarde aussi du côté de GuiCtrlCreateContextMenu.

Re: [..] Click droit sur element d'un GUICtrlCreateListView

Posté : lun. 01 mars 2010 06:24
par Vins83
celà donne ça:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("listview items", 220, 180, 100, 200, -1, $WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color

$listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
$item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
$item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
$item3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)

GUIRegisterMsg($WM_NOTIFY, "ma_fonction")

GUISetState()

While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd

Func ma_fonction($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $tagNMHDR

    $hWndListView = $listview
    If Not IsHWnd($listview) Then $hWndListView = GUICtrlGetHandle($listview)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    If $iCode = $NM_RCLICK Then
        MsgBox(0, "test", "click droit", 5)
        ;ton action
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>ma_fonction
mais j'ai du mal a saisir le truc.

Re: [..] Click droit sur element d'un GUICtrlCreateListView

Posté : mar. 02 mars 2010 13:54
par tatane
Désolé c'est ma faute :(

Ajoute #include <GuiListView.au3>
et supprime $tagNMHDR de cette ligne :
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $tagNMHDR

Normalement lorsque tu cliqueras avec le clic droit dans la listview ton message de test apparaitra.
Ensuite si tu veux obtenir un menu contextuel selon l'item cliqué, il faudra :
- que tu récupères la position de la souris au moment du clic
- que tu testes pour savoir si un item est bien sélectionné
- que tu crées un menu contextuel GuiCtrlCreateContextMenu (éventuellement avec l'aide de GuiCtrlCreateDummy())
- que tu affiches ce menu contextuel aux positions précédemment sauvegardées

Je n'ai jamais testé le clic droit sur item de listview alors mes idées ne sont peut être pas justes ;)

Re: [..] Click droit sur element d'un GUICtrlCreateListView

Posté : mer. 03 mars 2010 06:11
par Vins83
Merci à toi ,celà marche au top ;)

++ Vins