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 :

Checkbox et image


Sujet :

MFC

  1. #1
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut Checkbox et image
    Bonjour,

    je voudrais remplacer par une image (enfin exactement 1 image pour chaque état) la case à cocher d'une checkbox. Je n'ai pas trouvé comment faire : est-ce que quelqu'un l'a déjà fait et pourrait me dire comment procéder ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    pas de solution toute faite, il faut customiser le controle en rédefinissant la fonction "Paint" ... c'est à dire, redessiner le controle toi meme, comme tu l'entends ...

    pour ça, il y a le style BS_OWNERDRAW et la méthode CButton::OnDrawItem()

    mais il faudra aussi gérer le dessin du texte ... pas simple si tu débutes en MFC. (regarde auprès de la fonction DrawText() )

    regarde sur le net, il y a pleins de ressources sur le sujet, notamment ici : http://www.codeproject.com/KB/button...draw%20buttons

    tu devrais surement y trouver ton bonheur ...

    @+

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Le truc c'est que j'aimerai toujours pouvoir utiliser la fonction GetCheck().
    Si je suis obligé de repartir d'un CButton basique et de refaire ce mécanisme je trouverai ça passablement moisi ...

  4. #4
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    mais une CheckBox est un CButton ... c'est juste la façon de dessiner qui change. de meme pour un Radio button et un GroupBox
    la méthode GetCheck() et SetCheck() est dispo.
    l'état du bouton (donc coché ou pas) est fourni en paramètre à OnDrawItem() dans la structure DRAWITEMSTRUCT

    @+

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    J'ai donc surchargé un CButton et redéfinit la fonction DrawItem() afin de personnaliser mon affichage.
    Seul soucis si je crée mon bouton avec l'option BS_CHECKBOX, tout marche très bien avec un affichage classique (que je ne souhaite pas garder au final). Mais si je rajoute l'option BS_OWNERDRAW, alors la fonction SetCheck() ne fonctionne plus ... c'est tout simplement incompréhensible.

    En affichage classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GetCheck(); -> 0
    SetCheck(1);
    GetCheck(); -> 1
    En affichage OWNERDRAW :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GetCheck(); -> 0
    SetCheck(1);
    GetCheck(); -> 0
    Pour résumer en OWNERDRAW, bien que l'affichage se fasse comme je le souhaite, l'état ne change pas.

    Moi pas comprendre

  6. #6
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    la méthode GetCheck() et SetCheck() est dispo
    après tests et recherches il s'avère que c'est faux : il faut les surcharger pour que ça marche et ajouter un attribut à la checkbox perso pour retenir son état.

    En clair il faut tout se refaire puis ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Système checkbox et image de validation
    Par drag0vich dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/11/2012, 18h17
  2. un checkbox en image
    Par kevinf dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 29/06/2008, 09h14
  3. Image différente selon état du checkbox
    Par Marconico dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/12/2006, 15h12
  4. Grid avec CheckBox, Images, ...
    Par xenos dans le forum Delphi
    Réponses: 6
    Dernier message: 04/07/2006, 11h54

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