begin process at 2012 05 29 01:16:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Couleur de fond d'un bouton CONTROL d'une boite de dialogue


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

Couleur de fond d'un bouton CONTROL d'une boite de dialogue

dimanche 12 février 2006 à 16:42:28 | Couleur de fond d'un bouton CONTROL d'une boite de dialogue

julien_boss

'soir tout le monde :

alors j'ai une application où, dans une boite de dialogue, je peux choisir une couleur grâce à la fonction ChooseColor(...); bon ca marche, je récupère la couleur est tout, c'est nickel, mais je veux pouvoir afficher dans un cadre (lui meme dans la boite de dialogue) la couleur choisie
J'ai pensé pour cela à un CONTROL, combiné aux attributs SS_WHITERECT, SS_SUNKEN et WS_EX_CLIENTEDGE comme je l'ai vu dans une source ; dont je modifierais la couleur d'arîère plan, mai comment ?
A partir du handle du bouton (HWND pal), comment faire ? (si c'est possible)

Voilà eh ben merci d'm'avoir lu, et de répondre
Bonne soirée
dimanche 12 février 2006 à 23:44:24 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

wxccxw

Membre Club

hbrBackground = CreateSolidBrush(RGB(236,233,216));

voila :)

lundi 13 février 2006 à 11:40:13 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

racpp

Administrateur CodeS-SourceS
Salut,
Voici une solution utilisant le sous-classement:
1- Tu déclares ceci en global:
WNDPROC OldStaticProc;
COLORREF couleur;

2- Tu crées et sous-classes le Static pendant WM_CREATE ou WM_INITDIALOG:
 hStatic =CreateWindowEx(WS_EX_CLIENTEDGE,"STATIC","",WS_CHILD | WS_VISIBLE | SS_SUNKEN | SS_WHITERECT,0,0,100,25,hWnd,0,0,0);            OldStaticProc=(WNDPROC)SetWindowLong(hStatic,GWL_WNDPROC,(LPARAM)StaticProc);

3- Voici la procédure de sous-classement à placer juste après la déclaraion des variables globales:
LRESULT CALLBACK StaticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   
    if (message==WM_PAINT)
    {
        PAINTSTRUCT ps;
        HDC hDC = BeginPaint(hwnd, &ps);
        HBRUSH hBrush = CreateSolidBrush(couleur);
        RECT rc;
        GetClientRect(hwnd,&rc);
         FillRect(hDC,&rc,hBrush);
        DeleteObject(hBrush);
        EndPaint(hwnd, &ps);
        return 0;
    }
    return CallWindowProc(OldStaticProc, hwnd, message, wParam, lParam);
}

couleur est la couleur récupérée avec ChooseColor().

lundi 13 février 2006 à 12:07:44 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

vecchio56

Administrateur CodeS-SourceS
Plutot que GetClientRect, autant utiliser le RECT dispo dans la structure ps.
lundi 13 février 2006 à 16:12:39 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

racpp

Administrateur CodeS-SourceS
C'est vrai, je l'ai oublié car j'ai fait vite. La procédure devient donc:
LRESULT CALLBACK StaticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

    if (message==WM_PAINT)
    {
        PAINTSTRUCT ps;
        HDC hDC = BeginPaint(hwnd, &ps);
        HBRUSH hBrush = CreateSolidBrush(couleur);
        FillRect(hDC,&ps.rcPaint,hBrush);
        DeleteObject(hBrush);
        EndPaint(hwnd, &ps);
        return 0;
    }
    return CallWindowProc(OldStaticProc, hwnd, message, wParam, lParam);
}

Le principe reste le même mais on gagne 2 lignes de code, et du temps à l'exécution. Merci pour la précision.


lundi 13 février 2006 à 23:48:48 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

racpp

Administrateur CodeS-SourceS
J'ai oublié aussi de préciser qu'il faut ajouter:
InvalidateRect(hStatic,0,1);
juste après le changement de la valeur de couleur pour forcer le redessin du fond du static.
Voilà, je pense que c'est tout.


mercredi 15 février 2006 à 13:06:36 | Re : Couleur de fond d'un bouton CONTROL d'une boite de dialogue

julien_boss

Merci beaucoup, ca m'aide énormement !



Cette discussion est classée dans : bouton, couleur, control, boite, dialogue


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, Boite de dialogue MFC [ par julok2 ] Salut,j'écris actuellement un programme dans lequel j'ouvre des boites de dialogue. J'ai donc créé des fonctions OnBouton dans une autre classe où j'u Insérer bitmap dans un bouton dans une boite de dialogue [ par safira ] safira:)Salut! Je suis nouvelle dans ce forum! J'aimerais savoir comment mettre un bitmap dans bouton qui se trouve dans une boite de dialogue avec MF bouton :-) [ par melaaddali ] Bjr je programme avec vc++.Je veux savoir comment associer une boite de dialogue à un bouton. cad si j'appuie sur le bouton je veux que la boite de di couleur de fond boite de dialogue [ par dambeaufort ] Bonjour, Pourriez vous m'indiquer une méthode afin de changer la couleur de fond d'une boite de dialog. Je travaille en MFC sous visual C++.Si vous po Bouton enregisté [ par anaxode ] J'ai un petit problème , je voudrais enregisté le contenu de richEdit dans un fichier.J'arrive a le faire depuis une Boite de dialogue , mais j'arri couleur boite de dialogue [ par ancat ] Bonjour,j'ai fait un petit programme en win32 mais je trouve mes boites de dialogue un peu fade....Comment puis-je changer la couleur de la boite.?Je Bouton et Boite de dialogue OpenGL [ par asmanur ] Ma question d'aujourd'hui :Est-il possible de créer des boutons et des boite de dialogue sous glut facilement (et j'insiste sur facilement)Merci d'av Video dans une boite de dialogue [ par coyote ] Je developpe sous VC++ 6 avec les MFC.Je souhaiterais integrer une video dans ma boite de dialogue, comme un control.Je connais la methode MCIWndCreat BOUTON POUR OUVRIR UNE BOITE DE DIALOGUE [ par XSESSloulou ] bjr je suis debutant en visual c++, et je souhaiterai pouvoir ouvrir une deuxieme boite de dialogue a l'aide d'un bouton.comment je paut le faire.merc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,640 sec (4)

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