begin process at 2012 02 10 23:07:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Drag Drop


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Drag Drop

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ée dans : windows, treeview, explorateur, drag, drop


Répondre à ce message

Sujets en rapport avec ce message

Drag and drop depuis listview vers explorateur windows [ par Albanderuaz ] Bonjour, Je cherche à implémenter un drag and drop de ma listview vers l'explorateur windows. En fait ma listview contient des chemins vers des fichi TOOLTIPS SUR FICHIERS IMAGES DANS L EXPLORATEUR WINDOWS [ par freddow ] bonjour a tous et a toutes... je pense que tout est dit dans le titre....je voudrais savoir, comment faire avec des composants du style sdk xnview pou Savoir repertoire courant explorateur windows [ par walterss ] SVP pouvez vous m'aider a trouver le repertoire courant d'explorateur windows a partir d'un programme ecrit en c ou c++ [Bar] Personnaliser le nom des fichiers dans l'Explorateur Windows (Windows XP) [ par titi2323ml ] Bonjour J'aimerais, si cela est possible, personnaliser le nom de mes FICHIERS, dans l'Explorateur Windows (sous Windows XP). Avoir, par exemple, ce drag and drop [ par mayssakh84 ] Bonjour en fait je dois réaliser une application qui permet de créer des templates ( des présenatation graphiques ). l'utilisateur aura la possiblité Drag&Drop C++ Builder [ par JejeLand ] Bonjour à tous,Je cherche à afficher une image qui suit ma souris lors d'un Drag&Drop et je ne sais pas comment faire... Salut. Drag and Drop c++ builder [ par ArnaudEIC ] Bonjour, J'essaye de faire un drag and drop entre deux appli faite en c++ builder. Et bien sur, cela ne fonctionne pas <img src="http://www.developpez Drag and Drop d'images [ par venga2 ] Bonjour,je cherche un exemple ou un tutoriel montrant un drag and drop d'une image dans la meme boite de dialogue en MFC, il s'agit donc juste un dépl Treeview API WINDOWS [ par lektrosonic ] Bonjour,je code en C et en API Windows une applicationJ'ai un treeview et je voudrais mettre a jour le texte de un de ses elements sans le supprimer.J treeview API windows [ par lektrosonic ] Bonsoir, en C et avec api windows..je souhaite modifier le texte d un element d un treeview sans le supprimer.j'ai esseye le message TVM_SETITEM mais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,902 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales