Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1864 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [MFC]Deplacer dessin

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MFC]Deplacer dessin

n°1307996
denebj
Posté le 17-02-2006 à 14:19:27  profilanswer
 

Salut à tous :)
Une petite question, j'aimerais deplacer un objet ( un rectangle par exemple) dans une zone (zone bouton, j'utilise, un ondrawitem) c est à dire une fois qu'il est creér, comment faire pour le deplacer ou je veux dans dans moin bouton ??
 
merci

mood
Publicité
Posté le 17-02-2006 à 14:19:27  profilanswer
 

n°1308199
slash33
Posté le 17-02-2006 à 16:28:46  profilanswer
 

Quel est la nature de ton rectangle ? Dessiné ou contrôle d'IHM ?

n°1308200
denebj
Posté le 17-02-2006 à 16:29:29  profilanswer
 

nan dessiné à avec CRect

n°1308226
slash33
Posté le 17-02-2006 à 17:06:39  profilanswer
 

Comment je procède :
- tu n'as aucun besoin de la zone bouton : tu captures les événements de la souris au niveau de la vue de dessin.
- à priori j'opterai pour un CView
- tu gères un attribut de type CRect pour conserver la position du rectangle (voir comment initialiser sa position)
- tu gères un indicateur pour le drag & drop et tu adaptes les gestionnaires de messages de la souris en conséquence.
- procédé classique :
-> sur WM_LBUTTONDOWN: tu testes si le curseur est dans le rectange, si c'est le cas tu positionnes l'indicateur de drag.
-> Sur WM_MOUSEMOVE: tu "déplaces" le rectangle si le flag de drag est positionné sinon tu fais rien (ou une autre action que tu as définit). Une méthode simple pour déplacer l'objet à l'écran : dessiner un rectangle de focus (attention deux phases) - nécessite de mémoriser la nouvelle position à chaque fois (en mettant à jour la position du rectangle par exemple, mais cela ne permet plus d'annuler le déplacement).
-> Sur WM_LBUTTONUP :
- si l'indicateur de drag est positionné, tu modifies la position du rectangle, tu met à zéro le flag de drag et tu redessines la vue.
- sinon tu ne fais rien (ou comportement spécifique)
- le OnDraw de la vue se contente de dessiner le rectangle à sa position.


Message édité par slash33 le 17-02-2006 à 17:12:05
n°1308251
denebj
Posté le 17-02-2006 à 17:45:35  profilanswer
 

Hum alors ca c'etait mon idée de base, mais voila pourquoi je n'es pas opté pour elle :
 
Ma fenetre ou j'ai besoin de dessiner n'est pas ma fenetre mere, c'est une boite de dialog, ouverte grace à 2 menus consecutifs.
 
Donc j'ai du opter pour une ondrawitem sur bouton.
 
Donc dans ce cas les evenements que tu definis ne marchent pas. On m'a dit d'utiliser SetWindowPos pour deplacer tt ca mais bon c'est assez leger :S


Message édité par denebj le 17-02-2006 à 17:46:58
n°1308254
slash33
Posté le 17-02-2006 à 17:49:42  profilanswer
 

Que ce soit une boîte de dialogue (un CDialog infine donc ?) ou un CView de toute façon les deux héritent de CWnd qui permet de capturer les événements souris.

n°1308255
slash33
Posté le 17-02-2006 à 17:50:56  profilanswer
 

Par contre perso je te conseille un CStatic (hérite encore de CWnd) à fond blanc surchargé de la manière adhoc et inséré dans le dialogue.


Message édité par slash33 le 17-02-2006 à 17:52:00
n°1308261
denebj
Posté le 17-02-2006 à 17:55:32  profilanswer
 

Eh bien, les evenements souris marchent trés bien hors bouton, mais à partir du moment ou on essai sur un bouton sa ne marche pas ( normal ).
Le probléme c'est que j'ai bien avancé dans ce projet et je garde finalement cette méthode, mais c'est possible de deplacer une figure dans ce type bouton ?

n°1308266
slash33
Posté le 17-02-2006 à 18:08:00  profilanswer
 

Si tu surcharges un CButton et que tu captures les événements dans cette classe ça devrait fonctionner mais je trouve cela très peu cohérent (et cela va probablement parasiter le comportement normal du bouton).


Message édité par slash33 le 17-02-2006 à 18:08:43
n°1308425
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-02-2006 à 23:33:28  profilanswer
 

j'ai fait un attrape con en MFC y'a longtemps, à l'époque ou j'avais rien à foutre, ça peut peut-être servir :D
exe : http://harko.free.fr/euro.exe
source : http://harko.free.fr/euro.rar

mood
Publicité
Posté le 17-02-2006 à 23:33:28  profilanswer
 

n°1308435
slash33
Posté le 17-02-2006 à 23:57:04  profilanswer
 

Marrant. Y a juste un défaut : de temps en temps le bouton déborde de la zone visible.

n°1308454
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-02-2006 à 00:27:10  profilanswer
 

oui, j'ai pas clippé :D

n°1308569
denebj
Posté le 18-02-2006 à 12:45:01  profilanswer
 

merci  :-)
 
PS: j'ai maté le code, c'est pas du tout ce dont j'ai besoin  :D  :D. En faite, j'ai un dessin dans un bouton ( qui me sert de zone de dessin quoi) et je veux deplacer un ce dessin comme ou je veux dans ce bouton)
 
PS2 : C'est de ma faute, je t'ai induit en erreur avec le setwindowpos, ca c'est pour deplacer mon controle, or moi je veux deplacer ce qui est dans ce controle.


Message édité par denebj le 18-02-2006 à 14:27:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [MFC]Deplacer dessin

 

Sujets relatifs
déplacer un fichierproblème à la compilation MFC
C++ / MFC executable capricieux[Java ]Déplacer une image
MFC: Radio Button et Group BoxExcell déplacer valeur
[MFC] CListBox récupérer la valeur (non sélectionée)[Visual MFC] Sérialisation de structure (LOGFONT)...?
[Arbres] Logiciel de dessinPb de dessin dans un Jpanel au moment d'un clique....
Plus de sujets relatifs à : [MFC]Deplacer dessin


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR