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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Couleur de fenêtre


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

Couleur de fenêtre

dimanche 12 décembre 2004 à 12:40:20 | Couleur de fenêtre

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, CreatePen(PS_SOLID, 0, RGB(0, 128, 128)));
SetBkMode(hdc, OPAQUE);
SetBkColor(hdc, RGB(0, 128, 128));
EndPaint(hWnd, &pps);

j'ai essayé ce script sans succès
et si quelqu'un a le temps de m'expliquer tout ce truc compliqué avec les DC, les hWnd, les SelectObject, les compatible DC, etc ce serait simpa

CyberP,
Celui qui dit que toute question a une réponse
dimanche 12 décembre 2004 à 13:54:33 | Re : Couleur de fenêtre

Arnotic

Administrateur CodeS-SourceS
J'utilise :

case WM_ERASEBKGND:
hdc = (HDC) wParam;
GetClientRect(hdlg, &rc);
hbrBk = CreateSolidBrush(RGB(196, 218, 250));
FillRect(hdc, &rc, hbrBk);
return 1;

Le msg WM_ERASEBKGND et envoyée à la WndProc

@+
Arnotic,
Admin CS, MVP Visual C++
dimanche 12 décembre 2004 à 14:19:40 | Re : Couleur de fenêtre

vecchio56

Administrateur CodeS-SourceS
La tu vas créer le brush à chaque fois, c'est pas bon...
Autant faire carrément un

SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, (LONG)hbrush);
dimanche 12 décembre 2004 à 14:28:39 | Re : Couleur de fenêtre

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Voici une autre solution:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
RECT rect;
GetClientRect(hwnd,&rect);
HBRUSH couleur=CreateSolidBrush(RGB(255,0,0));
FillRect(hdc,&rect,couleur);
DeleteObject(couleur);
EndPaint(hwnd,&ps);
return 1;
}

Si tu veux changer la couleur après appui sur un bouton par exemple il suffit de déclarer une variable COLORREF en static au début de de ta WndProc comme ceci:
static COLORREF macouleur;

Puis dans le traitement du message WM_COMMAND du bouton tu ajoute ceci:
macouleur=RGB(0,255,0);//définis la couleur comme tu veux
RECT rec;
GetClientRect(hwnd,&rec);
InvalidateRect(hwnd,&rec,1);

Dans le traitement de WM_PAINT tu remplaces le paramètre de CreateSolidBrush() par "macouleur".
Si tu veux mieux comprendre tous les trucs sur les HDC etc... il n'y a pas mieux que le livre électronique téléchargeable sur le site de BruNews: http://brunews.free.fr


dimanche 12 décembre 2004 à 15:19:34 | Re : Couleur de fenêtre

CyberP

Merci beaucoup ça marche

CyberP,
Celui qui dit que toute question a une réponse
dimanche 12 décembre 2004 à 17:02:38 | Re : Couleur de fenêtre

vecchio56

Administrateur CodeS-SourceS
Si tu utilises la méthode de racpp, il vaut mieux que tu ajoutes

case WM_ERASEBKGND:
return 0;

sinon lors du redimentionnement de ta fenêtre (s'il il en a) tu auras un clignotement
dimanche 12 décembre 2004 à 21:09:34 | Re : Couleur de fenêtre

CyberP

Non mais mon code est pas celui d'une fenêtre classique
Si j'ai mis la réponse en racpp en réponse acceptée c'est parce que j'allais pas mettre les 3

CyberP,
Celui qui dit que toute question a une réponse


Cette discussion est classée dans : couleur, fenêtre, hwnd, hdc, pps


Répondre à ce message

Sujets en rapport avec ce message

Récuperer un hwnd de fenêtre [ par andros ] Bonjour,Je n'ai pas trouvé la réponse sur le forum au pb que voici :(ss Bor C++6) -d'une part j'ai un programme éxécutable en mode console Dos.-d'autr Screenmate defectueux [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex Une fenetre animee transparente [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu C la seconde foi ke je poste sur ce sujet, mais j'ai un autre probleme. En gros: j'ai une fenetre transparent probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! API, probleme de synchronisation?? refresh visible dans la dlg:( [ par JackosKing ] yOp,Bon voilà, je debute en API? et je voulais coder des menus persos, le probleme c'est que ma fenetre n'arrete pas de se refresh, meme quand il n'y Edit Control [ par cybermatthieu ] Bonjours,Je suis en Train d'apprendre comment progrmmer en Win32 avec la Class Windows.h. Ce petit programme ne fait q'afficher des caracter mais j'ai Question à propos de DrawText [ par Freeman2222 ] Hello tlm! J'ai écrit une application windows qui m'affiche du texte dans un rectange prédéfini mais le prob c'est que DrawText ne revient pas automat API :: gestion du mulo [ par JackosKing ] LRESULT CALLBACK Twiny::WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static bool activate = FALSE; switch ( message ) { case WM_MO disparition de mon bitmap. [ par oRTEEZ ] Voila j'ai une fenetre dans lequel je load mon un bitmap al'aide de la fonction suivante. Mon probleme es t que si je passe sur un autre prog mon imag LoadImage DevC++ [ par guitoulefoux ] Bonjour,Je cherche a mettre un fond d'écran dans ma form.Pour cela il faudrait que j'utilise loadimage.Je pense déjà avoir pas bien avancé (Merci BruN


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,452 sec (3)

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