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

Visual C++ Discussion :

[MFC] RedrawWindow laisse des traces!


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut [MFC] RedrawWindow laisse des traces!
    Bonjour,

    Voila je développe un ActiveX sur un bouton qui peut avoir 3 position (milieu, gauche, droite) et donc j'ai fait en sorte que si l'on clic à droite et bien c'est la position droite du bouton qui est dessiner, et idem pour les autres positions.

    Seulement comme vous pouvez voir sur le fichier joint le dessin des anciennes position reste... et c'est pas beau.
    Cela vient du faite, que mes bitmap de bouton sont entouré de vert, cette couleur me sert pour faire la transparance autour des dessins.

    Mais comment faire pour enlever ça?
    J'ai bien sur pensez au fillrect, mais de quel couleur? pas transparant ça va me faire le même effet

    Merci
    Tuizi.
    Images attachées Images attachées  

  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
    pourquoi ne pas utiliser des bitmaps en mémoire des différents états et les projeter ?
    sinon malgré ton image je ne vois pas trop le probléme.
    pour effacer c'est sûr un fillrect fait l'affaire ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    pourquoi ne pas utiliser des bitmaps en mémoire des différents états et les projeter ?
    C'est ce que je fais

    sinon malgré ton image je ne vois pas trop le probléme.
    Regarde cette nouvelle pièce jointe, c'est ce que produit mon ActiveX et c'est un assez gros problème
    Images attachées Images attachées  

  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
    hé bien il suffit de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pDC->PatBlt(0,0,Rect.Width(),Rect.Height(),WHITENESS);
    pour effacer la surface avant dessin ou projection non ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Merci pour ta réponse

    Malhereusement ça ne vas pas, cela supprime bien les trace oui, mais je perds la transparance, tout le tour est blanc.

    Ceci est du au paramètre: "WHITENESS Turns all output white."

    J'ai regarder les autres options mais aucun n'a l'air de convenir

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    La fonction:
    Invalidates the entire client area of CWnd.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Invalidate(
       BOOL bErase = TRUE 
    );

    A l'air de marché mais étrangement elle ne marche qu'une fois

  7. #7
    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
    Rajoute un UpdateWindow(); derrière ..

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Donc sans le UpdateWindow(); la fonction Invalidate() fait ce que je veux mais qu'une seul fois.
    Avec le UpdateWindow(); ça ne marche pas du tout ça fait toujours la meme chose

    J'ai mis ça dans OnLButtonDown() pour info, enfin j'ai essayer de les placer un peu partout ça ne change rien

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Sur le forum il y a beaucoup de sujet qui parle des fonctions:
    BeginPaint() et EndPaint(), est-ce que ça pourrait changer quelque chose?

    J'ai essayer mais ça ne dessine rien à l'écran ça se met dans le OnDraw()?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Aurais-je posé une colle?

Discussions similaires

  1. [HighCharts] Tooltip qui laisse des traces
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 23/03/2014, 17h38
  2. CrossCursor qui laisse des traces
    Par mtloper dans le forum Langage
    Réponses: 0
    Dernier message: 02/02/2008, 18h21
  3. [MFC] acces a des composants
    Par abignon dans le forum MFC
    Réponses: 7
    Dernier message: 26/03/2004, 11h58
  4. Réponses: 3
    Dernier message: 11/02/2004, 12h50

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