Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Changé la couleur d'un bouton [ Windows / GUI ] (KsmoinO)

mercredi 18 avril 2007 à 14:12:03 | Changé la couleur d'un bouton

KsmoinO

Boujour,
je désire créer, un bouton avec les styles : BS_CHECKBOX et BS_PUSHLIKE et je désire qu'en fonction de l'état de se bouton il s'affiche de couleur différente.
si le bouton est créer de cette façon :
CreateWindowEx(0,"BUTTON",nom_boutton,
                BS_CHECKBOX | BS_PUSHLIKE
                | WS_CHILD | WS_VISIBLE,
                x,y,
                Width,Height,
                hWnd,NULL,
                NULL,NULL);
je n'arrive pas à modifier la couleur
et si il est créé de cette façon :
CreateWindowEx(0,"BUTTON",nom_boutton,
                BS_OWNERDRAW
                | WS_CHILD | WS_VISIBLE,
                x,y,
                Width,Height,
                hWnd,NULL,
                NULL,NULL);
avec dans le traitement du message WM_DRAWITEM

    LPDRAWITEMSTRUCT pdis;
    HDC hDC;
   
    bool is_pushed, is_focused , is_checkeded;
   
    UINT uState;
    LONG res=0;
   
    pData = (PlanningCtrl *)GetWindowLong(hWnd,GWL_USERDATA);
   
    // On affecte à pdis le contenu de lParam
    pdis = (LPDRAWITEMSTRUCT) lParam;
       
    // Vérifie si le bouton est appuyé
    is_pushed = pdis->itemState & ODS_SELECTED;
    // et s'il détient le focus
    is_focused = pdis->itemState & ODS_FOCUS;
    // et son état
    is_checkeded = pdis->itemState & ODS_CHECKED; //reste tout le temps à faux
   
    //Définir la couleur du texte:
    SetTextColor(pdis->hDC, RGB(0,0,0));
    //Définir la couleur du fond:
    SetBkColor(pdis->hDC, RGB(0,255,0));
   
    ExtTextOut(pdis->hDC,0,0,ETO_CLIPPED|ETO_OPAQUE,&(pdis->rcItem),"toto",4,NULL);
    // Dessin du bouton
    DrawEdge(pdis->hDC,&(pdis->rcItem),(is_pushed?EDGE_SUNKEN:EDGE_RAISED),BF_RECT);
   
    return TRUE;

je n'arrive pas à modifier l'état du bouton mais je peux choisir la couleur :/

auriez vous une idée qui pourrai m'aider ?

mercredi 18 avril 2007 à 17:16:50 | Re : Changé la couleur d'un bouton

SnOOpss

Pour avoir l'etat d'un boutton
bool bChecked = (SendMessage(lpdis->hwndItem, BM_GETCHECK, 0, 0) == BST_CHECKED);

Mais en ownerdraw je crois que le style BS_PUSHLIKE est a gerer toi meme.

d'apres la msdn ODS_SELECTED : The menu item's status is selected.

mercredi 18 avril 2007 à 17:22:56 | Re : Changé la couleur d'un bouton

SnOOpss

Je voulais dire ODS_CHECKED The menu item is to be checked. This bit is used only in a menu.
Je crois pas que ce soit ca qui t'interesse.

mercredi 18 avril 2007 à 17:24:33 | Re : Changé la couleur d'un bouton

KsmoinO

si je fais :
SendMessage(lpdis->hwndItem, BM_GETCHECK, 0, 0)

il merenvoit BST_UNCHECKED
bon jusque là rien d'anormal, mais si ensuite je fais
SendMessage(lpdis->hwndItem, BM_SETCHECK,BST_CHECKED, 0)
suivit de :
SendMessage(lpdis->hwndItem, BM_GETCHECK, 0, 0)
il me renvoit encore BST_UNCHECKED
Comment contourner ce problème avec un ownerdrawn


mercredi 18 avril 2007 à 17:26:06 | Re : Changé la couleur d'un bouton

KsmoinO

En fait je veux faire un check box en ownerdraw commen pourrais je faire


mercredi 18 avril 2007 à 17:44:56 | Re : Changé la couleur d'un bouton

SnOOpss

Réponse acceptée !
Bizarre chez moi ca marche tres bien. va jeter un coup d oeuil sur une de mes sources > http://www.cppfrance.com/codes/CUSTOMISATION-CONTROLES-AUTOMATIQUE-OU-APPLICATION-THEME-PERSO-WIN_39508.aspx

Je ne croit pas que la version du site gere les pushlikes mais les check et radio fonctionnent

jeudi 19 avril 2007 à 08:43:49 | Re : Changé la couleur d'un bouton

KsmoinO

bon j'ai un peu parcourru ta source pour voir comment tu faisais
toi tu utilise une classe perso pour gérer les actions sur les boutons n'est il pas possible d'utiliser les standards ?
merci en tout cas de ton aide je crois qu'au pire je m'en sortirai comme tu as fait

jeudi 19 avril 2007 à 17:18:06 | Re : Changé la couleur d'un bouton

SnOOpss

Oui, oui pas besoin de classes (surtout si tu n'as qu'un seul boutton customisé) et le sous classement du boutton est obligatoire uniquement si tu veut le faire reagir au passage de la souris (sans clic) sinon tu peut tout gerer via la "MainProc".

lundi 23 avril 2007 à 09:54:36 | Re : Changé la couleur d'un bouton

KsmoinO

Réponse acceptée !
j'avais donc plus de 50 boutons à customiser j'ai donc fais un peu comme ta source changeant la procédure de traitement du bouton et en rajoutant des varriables, ça marche plutôt bien merci de ton aide



Cette discussion est classé dans : bouton, couleur, hdc, is, pdis


Répondre à ce message

Sujets en rapport avec ce message

Modifier Couleur d'un Bouton et d'une Boite de Dialogue en C++? [ par alanbraxe31 ] Bonjour tt l'monde!je cherche un script simple ( car je suis débutant en c++) pour modifier la couleur d'une boite de dialogue créée automatiquement, couleur de bouton sous mfc [ par dambeaufort ] bonjour,est ce que quelqu'un pourrais me faire une source simple avec une bouton pour lequel on peu definir sa couleur? Je n'ai pas trouver de chose s Un bouton imagé [ par victorcoasne ] Comment faire pour que sur un bouton apparaisse l'image ?J'ai trouvé comment faire apparaître une image : void PrintBmp(HWND hWnd, char *filename, i couleur bouton [ par magic_Nono ] y a qq tps, j'aV repéré une sourcepermettant de faire changer les couleurs sur un boutonil me semble que CT MFCje me souviens d'une interface avec 4 b bouton couleur c++ [ par Otacon87 ] Voilà j'ai un problème je voudrai modifier la couleur d'un bouton. J' utilise la fonction WM_CTLCOLORBTN comme ceci:    case CTLCOLORBTN: Changement de la couleur du text d'un bouton [ par timy94 ] Comment changer dynamiquement la couleur du text d'un BOUTON sous API32 .J'ai essayer WM_CTLCOLORSTATIC: mais ça n'a pas marché.Pae contre WM_CTLCOLOR Couleur de fenêtre [ par CyberP ] Comment changer la couleur d'arrière plan d'une fenêtre après l'avoir créée ?PAINTSTRUCT pps;HDC hdc;hdc = BeginPaint(hWnd, &pps);SelectObject(hdc, Cr Bouton couleur+Rectangle couleur+redimensionnement de fenetre [ par dekriss ] Bonjour, Alors en gros mon problème est que dans mon programme en API sans MFC j'ai deux rectangles de couleur noire et grise pour faire le fond (je C/dev Problème rafraichissement de coloration bouton [ par omnia ] Bonjour j'ai actuellement un problème de rafraichissement de la coloration de bouton je m'explique:j'ai une application avec des onglets et des liste Personnaliser couleur du texte d'un bouton [ par ndubien ] Bonjour,Je cherche à savoir : comment faire pour mettre le texte d'un bouton, de police :HFONT MaPolice = CreateFont(24, 0, 0, 0, FW_BLACK, 0, TRUE, 0


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.