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 :

Comment changer la couleur d'une combobox ?


Sujet :

MFC

  1. #1
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut Comment changer la couleur d'une combobox ?
    Bonjour � tous,

    En ce qui concerne la gestion des couleurs des contr�les, je suis novice...

    Je cherche � cr�er une combobox ayant un statut de lecture seule comme celui des champs de saisie.

    Pour cela, il faut que j'arrive � donner dynamiquement � ma combobox de type droplist la m�me couleur de fonds que celle des champs d'�dition lorsqu'il sont en lecture seule. J'ai bien regard� dans la FAQ, mais je n'ai pas tout compris...

    Je pr�cise quand m�me que je ne veux pas d�sactiver la combobox car je veux que la liste puisse �tre d�roul�e...

    Quelqu'un peut-il m'aider ?

  2. #2
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Personne n'a d'id�e � me donner ?

    Mon probl�me peut se d�composer en 2 sous probl�mes :

    1. changer la couleur de la combobox.
    J'ai r�ussi � changer la couleur de la liste quand elle est d�roul�e, en red�finissant la m�thode OnCtlColor. Mais le probl�me c'est que �a ne change pas la couleur de ma combobox quand elle n'est pas d�roul�e.

    2. r�cup�rer la couleur correspondant � celle d'un champ EDIT en lecture seule.

  3. #3
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Je n'y parviens vraiment pas ! Il faut dire que la gestion des couleurs dans les MFC me semble assez compliqu�e, et je crois que �a l'est encore plus sur une combobox...
    Votre aide me serait d'un grand secours !

  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

  5. #5
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Bonjour Farscape,

    Etant donn� que dans le cas qui m'int�resse il s'agit d'une combobox de type dropdownlist, il n'y a pas d'edit... Dans le cas d'une dropdown, je reconnais que �a marche tr�s facilement en subclassant l'edit et en le mettant en lecture seule...

  6. #6
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Je n'ai pas tout essay� car je suis s�r que c'est possible, mais j'ai essay� beaucoup de choses qui n'ont rien donn�. Je serais vraiment soulag� d'avoir la technique qui me permettrait de r�ussir !

  7. #7
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Youpi, j'ai r�ussi !
    A force d'obstination, j'ai enfin trouv� le moyen de parvenir � mes fins.

    La solution est de red�finir la m�thode CtlColor. Dans le .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    afx_msg HBRUSH CtlColor(CDC *pDC, UINT /*nCtlColor*/);
    Dans le .cpp :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    BEGIN_MESSAGE_MAP(CMaCombo, CComboBox)
    	ON_WM_CTLCOLOR_REFLECT()
    	...
    END_MESSAGE_MAP()
     
    HBRUSH CMaCombo::CtlColor(CDC *pDC, UINT /*nCtlColor*/)
    {
    	// Réglage de la couleur de fond en fonction du mode d'accès.
    	if (IsWindowEnabled() && !m_lectureSeule)
    	{
    		pDC->SetBkColor(GetSysColor(COLOR_WINDOW));
    		return GetSysColorBrush(COLOR_WINDOW);
    	}
    	else
    	{
    		pDC->SetBkColor(GetSysColor(COLOR_BTNFACE));
    		return GetSysColorBrush(COLOR_BTNFACE);
    	}
    }
    o� m_lectureSeule est l'attribut de type bool qui me permet de savoir si ma combobox est en lecture seule ou non.

    A force d'essayer toutes les couleurs avec la m�thode GetSysColor, j'ai trouv� que COLOR_WINDOW correspondait � la couleur standart du fond de la combobox quand elle est active (ou celle de l'edit), et COLOR_BTNFACE � celle de la combobox quand elle est inactive (ou celle de l'edit).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment changer la couleur d'une courbe?
    Par DVD-RW dans le forum MATLAB
    R�ponses: 6
    Dernier message: 12/06/2007, 16h39
  2. R�ponses: 7
    Dernier message: 13/11/2006, 12h12
  3. Comment changer la couleur d'une Led
    Par vantoff dans le forum C++Builder
    R�ponses: 6
    Dernier message: 11/07/2006, 12h21
  4. R�ponses: 7
    Dernier message: 28/06/2005, 11h53

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