Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Drag Drop [ Archives / API ] (said01)

vendredi 1 avril 2005 à 22:34:08 | Drag Drop

said01

Bonjour,

Au momoent d'un drag&Drop depuis l'explorateur windows vers ma treeview, je souhaite détéctcter le présence de la souris sur la treeView juste avant que l'utilisateur ne  relache le bouton gauche .

Autrement dit l'événement juste avant le WM_DROPFILES.

Détail:

je travaille avec VC++ 6 sous xp pro, et j'ai une appli qui fait fonction d'explorateur windows(fonctionnalité basic avec 1 treectrl et 1 listctrl),  je reussi bien mon drag drop sous WM_DROPFILES.

mon probleme est que mon mousemove detecte tous les mouvements de ma souris sur la treeview sauf en cas d'un drag&drop depuis l'explorateur. C'est à ce niveau là que je m'interesse au Drag (sans jeu de mot bien sûr)

j'ai fait le tour du net, il me semble que pour le dot net : C# entre autre  l'evénement soit  :
systeme.windows.forms.Dragevent
mais pour VC++ je me demande s'il existe 1 événement, 1 astuce ou 1 api qui me.

une idée svp ?

samedi 2 avril 2005 à 12:28:14 | Re : Drag Drop

magic_Nono

Membre Club

Bj

récupère les evts et la position de la souris

je l ai fais dans une ListBox et ça donne qqch comme ça:
(fait avec VC6)

void BListBox::OnLButtonDown(UINT nFlags, CPoint point)
{
 //précond: liste à sélection unique
 CListBox::OnLButtonDown(nFlags, point);
 if(!m_bWithDrag || m_bCaptured)
  return;
 UpdateData(true);
 int iSel=GetCurSel(); //IndexFromPoint(point);
 //err possible : si liste à sélection multiple
 if(iSel == LB_ERR)
  return;
 m_bCaptured=TRUE;
 m_ptMouseDown=point;
}

 

void BListBox::OnLButtonUp(UINT nFlags, CPoint point)
{
 if(m_bWithDrop/*&& m_bCaptured*/)
 {
  m_bCaptured=false;
  /// algo : SI la fenetre mère si elle accepte le drag-and-drop.
  if(GetParent()->SendMessage(msgBListBoxQueryDrop , (WPARAM) GetDlgCtrlID(), (LPARAM) this))
   /// algo : dire de faire le drag-n-drop (en attendant la fin de cette opération
   if(GetParent()->SendMessage(msgBListBoxDoDrop , (WPARAM) GetDlgCtrlID(), (LPARAM) this))
    m_bCaptured=false;
   else
    BVisuel::alerte("problème lors du déposé de l'élément traîné.");
 }
 CListBox::OnLButtonUp(nFlags, point);
}

 

void BListBox::OnMouseMove(UINT nFlags, CPoint point)
{
 if(m_bCaptured)
 /// algo : si le déplacement est suffisant pour etre considéré pour un drag
  if((abs(point.x - m_ptMouseDown.x) > 3) || (abs(point.y - m_ptMouseDown.y) > 3))
  {
   ReleaseCapture();
   m_bCaptured=FALSE;
   GetParent()->PostMessage(msgBListBoxBeginDragDrop , (WPARAM) GetDlgCtrlID(), (LPARAM) this);
  }
 CListBox::OnMouseMove(nFlags, point);
}

Magicalement
Nono.


mercredi 6 avril 2005 à 21:09:15 | Re : Drag Drop

said01

salut,

Désolé je suis parti sur autre chose mais revoilou....

En fait je crains ne pas m'être bien expliqué :

Dans ta réponse,  tu indique les événements OnLButtonDown et OnLButtonUp
or ds mon probleme ces 2 événements ont eu lieu au niveau de l'explorer Windob.

En bref,  c'est le moment où la fameuse fléche  arrive sur la TreeCtrl de ma
Dlg que je veux intercepter et donc là ma question devient plus précise :
est-ce que je peux implémenter pour ma TreeCtrl les événements suivants  :
OnDragEnter, OnDragOver, OnDragLeave, OnDrop.

Je sais par ailleurs que pour une CView c'est possible comme car il y'a  l'exemple
OCLIENT de la MSDN.

Il y'a certainement quelque chose qui m'échappe mais laquelle :
thats the QUESTION?!!!
@+
NB. Et encore merci pour ton aide.


jeudi 7 avril 2005 à 08:46:00 | Re : Drag Drop

magic_Nono

Membre Club
ben tu te met dans OnMouseMove
regarde l'état du bouton et check la position : pt

SI Appuyé et SI  pt.InRect(rect de ta treeView)

je vois pas pkoi tu ne récupèrerai pas ça...


++

vendredi 8 avril 2005 à 00:16:07 | Re : Drag Drop

said01

Justement c'est ce que je ne comprends pas non plus...
tous mes OnMouseMove je les recupere sans pb sauf au moment d'1 D&Drop depuis
l'explorateur

en fait si tu as VS c++ 6 sous la main,  ça prend 2 mn pour t'en rendre compte !?
avec appwizard je genere une appli  DialogBox , ds la template je mets 1 treectrl
et enfin je crée  le OnMouseMove où je mets 1 point d'arrêt,

j'execute mon appli et ensuite je lance l'explorateur que je reduis à mi hauteur de ma dialogBox
et là alors même que ma fenêtre est inactive, si je déplace ma souris sur la treectrl sans appuyer
 sur le bouton gauche : mon OnMouseMove fonctionne sans probleme
par contre si je "drag" un fichier ou 1 rep depuis l'explorateur et je pointe ma treectrl,
 il ne se passe rien et voilà....

Si tu as du nouveau je serai vraiment heureux de l'apprendre.

Dans toue les cas merci pour tes réponses. @+


vendredi 8 avril 2005 à 08:38:43 | Re : Drag Drop

magic_Nono

Membre Club
j'ai pas fait le test mais à tous les coup, c'est ton treeControle qui récupere l'évt de survol.

donc à priori, tu devrai résoudre ça en surclassant ton CTreeControle
et en transmettant l'evt onmousemove au pere.

Je ferai le test ce we
++




Cette discussion est classé dans : windows, treeview, explorateur, drag, drop


Répondre à ce message

Sujets en rapport avec ce message

upload d'un fichier par Drag&drop de l'explorateur vers IE [ par temp ] Voila, je cherche à faire un upload d'un fichier présent sur mon disque dur vers un serveur easyphp en faisant un glisser-déposer depuis l'explorateur explorateur windows [ par m.beber ] Salut à tous,Je vous écrits car j'ai un petit problème pour programmerune application de type "explorateur windows".Je travaille sous borland C++ Buil question drag drop [ par youpla51 ] Bonjour,Lorsque je fait un drag drop dans un cRichEditCtrl je recoit un message EN_DROPFILES dans lequel je ne peux recupérer que le nom du fichier.Or Drag and drop sur une CListctrl [ par Xavixxxx ] Bonjour !!!Je suis en train de programmer un agenda dynamique sous Visual C++ avec une CListctrl,et j'ai un gros problème.J'aimerai pouvoir déplacer t sources explorateur windows [ par linkinlife66 ] LINKINLIFE66 je cherche un explorateur windows pour mon projet Hook drag and drop [ par kakai ] J'ai un grand besoin d'aide. <P class=MsoNormal style drag&drop sur l'executable [ par crazyh0rse ] je voudrais faire un drag&drop sur l'icone de l'executable et recuperé le nom des fichier dropé.j'arrive a géré le drag&drop d'un fichier ds l'applica MFC: Drag and Drop d'objet [ par Breizhim ] Bonjour!Le drag and drop de fichier est expliqué et re-expliqué sur le net.Mais mon besoin est différent, sachant que l'utilisation des MFCs m'est imp Problème entre Tabctrl CListCtrl et le Drag and drop [MFC] [ par MasterShadows ] Salut à tous et à toutes;voilà mon problème; je veux faire une clistctrl en drag and drop en utilisant les MFC (cadre d'un cours); cependant il faut q Drag & drop sur exe [ par Galmiza ] Salut tout le monde !J'ai un problème avec les arguments passé à un exe suite à un drag and drop.Lorsque le nombre de fichiers glissés vers l'exe est


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.