begin process at 2012 02 09 21:26:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

Changé la couleur d'un bouton


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Changé la couleur d'un bouton

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ée 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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales