yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 2009
-
20 août 2006 à 08:28
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 2009
-
21 août 2006 à 00:19
Bonjour à tous,
je souhaiterai effectuer un drag&drop sur une edit.
J'arrive parfaitement bien à utiliser le drag&drop sur une fenêtre entière.
Comment arriver à limiter le drag&drop (icône compris) sur la seule edit désirée d'une interface graphique qui en compte plusieurs.
Si vous voulez plus de précisions, ya qu'à demander. ;-)
Merci d'avance.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 14:38
J'avais déjà essayé ça, mais sans succès.
Je vais détailler ma procédure quand je fais un drag and drop sur la fenêtre.
Je crée ma fenêtre avec CreateWindowEx(...) sans style WS_EX_ACCEPTFILES et dans le message WM_CREATE de la fenêtre, je fais DragAcceptFiles(frmhWnd, true); où frmhWnd est le HWND de la fenêtre.
Je crée mes edits avec CreateWindowEx(...) sans style WS_EX_ACCEPTFILES non plus.
Ensuite quand un drag and drop intervient, je traite le message WM_DROPFILES pour savoir le nom du fichier déposé sur la fenêtre.
Ca fonctionne sans souci. Que faut t'il changer pour avoir uniquement un message WM_DROPFILES quand le dépôt de fichier a lieu sur une edit ?
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 août 2006 à 14:52
Tu fais comme je t'ai dit, tu mets le style WS_EX_ACCEPTFILES pour l'edit (pas besoin d'appeler DragAcceptFiles comme ca).
Mais c'est l'edit qui va recevoir le message WM_DROPFILES, il faut donc le sous-classer:
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 15:38
Je comprends pas pourquoi ça fonctionne pas. Je fais la même chose que toi mais ça veut pas.
Petite précision, quand je crée ma fenêtre avec WS_EX_ACCEPTFILES (donc sans DragAcceptFiles) le drag and drop marche du tonerre.
Ca t'inspire ?
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 août 2006 à 15:47
J'ai essayé l'exemple que je t'ai donné, et il fonctionne très bien. Tu n'a qu'a faire un copier coller. Pas besoin de DragAcceptFiles, la seule chose est que l'edit doit avoir WS_EX_ACCEPTFILES
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 16:09
Tu peux mettre ton projet en lien stp, parce qu'on dirait qu'aucun objet créé (avec le style WS_EX_ACCEPTFILES
) sur la fenêtre n'accepte le drag and drop ? Par contre avec la fenêtre elle-même pas de problème.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 16:54
Malheureusement ce que tu as mis en lien ne m'a pas aidé, ton exe se ferme aussitôt à peine lancé, du coup j'essaie de compiler moi-même (dev-c++ 4.9.9.2) et après qq changements minimes ça compile et quand je lance l'exe, idem qu'avec le tien.
Il se ferme aussitôt qu'on le lance. En fait il s'avère que c'est l'enregistrement de la classe de la fenêtre qui échoue.
Mais j'ai un début de réponse tout de même. J'ai remarqué que quand je crée toute mon interface sur la fenêtre, si mon edit est créé après mon fameux tabcontrol (si tu te souviens de mon précédent post) le drag&drop foire.
Par contre si je le crée avant, ça marche nickel !
Tu as une explication à ça ou même une idée ? Moi je dois avouer que ça me troue le c.. !
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 17:21
Tes deux exe fonctionnent bien. Sur le deuxième ya juste une petite chose.
Sur l'edit du premier onglet le drag&drop marche mais pas sur celle de l'onglet suivant.
C'était fait exprès ?
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 17:36
Oui pardon j'avais pas regardé le fichier ressource.
Là je comprends tjs pas pourquoi. Tu as essayé en mettant ton tabcontrol avant les edits dans le fichier ressource ?
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 20 août 2006 à 18:50
Ah toi aussi ! Ca me rassure un peu.
J'ai repéré un style étendu pour les TabControl :[javascript:hhal_5.Click() OleInitialize] before setting this style.
J'ai pas essayé par contre. Mais c'est à fouiller je pense.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 août 2006 à 19:04
Ouais mais dans ce cas la c'est un peu différent, tu vas devoir travailler avec OLE (regarde la gueule de la structure <name>NMOBJECTNOTIFY</name>)<link href="../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}