IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Drag-and-drop qui laisse une jolie trainée


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Drag-and-drop qui laisse une jolie trainée
    Bonsoir à tous,

    Je développe une application graphique en MFC SDI où je déplace des formes en drag-n-drop.

    Lors du déplacement de la souris, je modifie les coordonnées de l'objet sélectionné, puis je poste le message WM_PAINT, la méthode OnPaint gérant l'affichage des dites formes.

    Seulement l'objet qui se déplace laisse une jolie trainée, autrement dit on voit les positions successives de la forme, et je n'arrive pas à trouver une solution pour empêcher cela. J'avais utiliser InvalidRect, mais le résultat est pas beau et pose plus de problèmes qu'autre chose. Je suis sûr que la solution est simple mais je ne la voit pas.

    Comment puis-je éviter cela simplement?

    Merci pour vos réponses.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    plutôt que de reconstruire l'affichage de la forme lors du déplacement,
    fait une copie du dessin avant déplacement dans un bitmap en mémoire.
    c'est ce bitmap que utilisera dans le paint pour le ré affichage lors du déplacement.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse Farscape, mais pourrais-tu être un peu plus précis?

    Au passage, j'utilise tes tutoriaux et je les trouve très clairs, donc merci de les avoirs fait.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Merci ,
    cet article devrait te renseigner sur la technique :
    http://www.codeguru.com/Cpp/misc/mis...ticle.php/c389

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai étudié la solution proposé par Fascape, mais je me suis rendu compte qu'elle n'était peut-être pas la plus adaptée. En effet, sa solution semble traiter le cas d'un clignotement ou d'une réminiscence de la forme en mouvement à l'image. Ce n'est pas mon problème, et si j'ai laissé penser que c'était le cas, désolé je mettre mal exprimé.

    En fait, mon souci c'est que ma forme se comporte comme un pinceau Paint, je peux dessiner avec quand je la déplace.Or, dès que je redimensionne la fenetre, les traces disparaisses et seules les formes "actuelles" restent affichées, conformément a ce que je veux.

    Donc il faudrait que j'efface le background à chaque OnPaint, ou quelque chose de se genre, mais je ne trouve pas trop.

    Merci pour vos réponses.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    il suffit d'effacer la zone cliente, un truc comme cela devrait suffire..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CBrush brush;
    brush.CreateStockObject(WHITE_BRUSH );
    CRect rc;
    GetClientRect(&rc); 
    pDC->Fillrect(rc,&brush);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Nickel! Merci beaucoup pour ton aide!

Discussions similaires

  1. [WD15] Drag and Drop champs d'une même table
    Par fasyr dans le forum WinDev
    Réponses: 1
    Dernier message: 03/02/2011, 10h18
  2. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  3. Drag and drop d'une structure avec virtualtreeview
    Par laudur dans le forum Composants VCL
    Réponses: 1
    Dernier message: 03/05/2006, 16h14
  4. Réponses: 4
    Dernier message: 01/10/2005, 11h03
  5. Drag and Drop inter process entre delphi et une appli. ext.
    Par protheus dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 03/06/2005, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo