[R] Drag and drop limites

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
micbar
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mer. 21 nov. 2007 17:29
Status : Hors ligne

[R] Drag and drop limites

#1

Message par micbar »

Bonjour à tous,
Avec les déclaratives ci dessous le Drag and drop est géré automatiquement :

Code : Tout sélectionner

GUICreate("",700, 132, 250, 207, -1,$WS_EX_ACCEPTFILES)
$file = GUICtrlCreateInput("", 40, 8, 225, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
 
Malheureusement la chaine ainsi renvoyée dans $file est limitée à 30000 caractères, ce qui peut être trop juste, compte tenu du fait, aussi, que le chemin complet est répété pour chaque nom de fichier.
Ma question est la suivante :
existe-t-il un autre moyen pour gérer le "drag and drop" ?
Merci par avance.
Modifié en dernier par micbar le dim. 03 févr. 2008 16:33, modifié 1 fois.
Eppur si muove (Galileo Galilei)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Drag and drop limites

#2

Message par Tlem »

Je ne sais pas si ça peut aider, mais j'avais trouvé une fonction particulière concernant le Drag & Drop.
Cette fonction permet de créer un tableau avec les éléments du Drag & Drop ...

Voici la partie essentielle du code adapter plus ou moins à votre script :

Code : Tout sélectionner

#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <Array.au3>

Global $WM_DROPFILES = 0x233
Global $gaDropFiles[1]

GUICreate("",700, 132, 250, 207, -1,$WS_EX_ACCEPTFILES)
$file = GUICtrlCreateInput("", 40, 8, 225, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)

GUISetState()

; Pour le Drag and Drop.
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        
        Case $GUI_EVENT_DROPPED
            _Arraydisplay($gaDropFiles,"xxx")
            
        ; Fermeture par la croix.
        Case $GUI_EVENT_CLOSE
            Exit
            
    EndSwitch
WEnd


; Fonction pour la gestion du Drag And Drop.
Func WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
    For $i = 0 To $nAmt[0] - 1
        $nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
        $nSize = $nSize[0] + 1
        $pFileName = DllStructCreate("char[" & $nSize & "]")
        DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
        ReDim $gaDropFiles[$i + 1]
        $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
        ;If StringInStr(FileGetAttrib($gaDropFiles[$i]), "D") Then $gaDropFiles[$i] = $gaDropFiles[$i] & "\*.*"
        $pFileName = 0
    Next
EndFunc   ;==>WM_DROPFILES_FUNC
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
micbar
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mer. 21 nov. 2007 17:29
Status : Hors ligne

Re: [R] Drag and drop limites

#3

Message par micbar »

OK merci Tlem
Cela marche bien et sans limitation.
Bonne journée
Eppur si muove (Galileo Galilei)
Avatar du membre
papus2
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 19 mars 2008 21:15
Status : Hors ligne

Re: [R] Drag and drop limites

#4

Message par papus2 »

bonjour,
le script de Tlem ne marche pas chez moi, j'ai rajouté #include <WindowsConstants.au3> et là super :) , c'est pas grand chose mais si ça peut éviter à quelqu'un de chercher...
en tout cas c'est un script que je vais réutiliser...
http://monsitedt.perso.neuf.fr/ mon premier programme autoit, listing de fichier v1.7
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Drag and drop limites

#5

Message par Tlem »

Ligne rajoutée dans le code. En 2008 il n'y en avait probablement pas besoin. :lol:

Merci.
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