begin process at 2012 05 30 20:00:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

[WIN32]Histoires de couleurs...


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

[WIN32]Histoires de couleurs...

lundi 7 juin 2004 à 17:44:48 | [WIN32]Histoires de couleurs...

Jeffray


Bonjour,

Je créé 2 edit à l'aide de CreateWindowEx() en readonly (style ES_READONLY).
Jusqu'à maintenant, la couleur de fond de ces 2 edit était grise.

Maintenant, toujours avec CreateWindowEx(), je rajoute un static dans lequel je mets un texte.
Ce texte, je le veux en rouge.
Je mets donc le code suivant dans la procédure de callback de ma fenêtre mère :

case WM_CTLCOLORSTATIC: {
if( GetWindowLong((HWND)lParam, GWL_ID) == ID_ERREUR ) {
SetTextColor( (HDC)wParam, RGB(0xFF,0,0) );
SetBkMode( (HDC)wParam, TRANSPARENT );
return (LRESULT)GetStockObject(NULL_BRUSH);
}

}
break;


çà marche, le texte est bien en rouge.
Mais ce que je ne comprends pas, c'est qu'avec le code ci-dessus, la couleur de fond de mes 2 edit en readonly est passée au blanc.
Pourquoi ?

Merci ! :o)
lundi 7 juin 2004 à 17:57:16 | Re : [WIN32]Histoires de couleurs...

BruNews

Administrateur CodeS-SourceS
Un EDIT readonly reagit au WM_CTLCOLORSTATIC (eh oui), alors verifie bien tes IDs et ta windproc.

ciao...
BruNews, Admin CS, MVP Visual C++
lundi 7 juin 2004 à 18:10:19 | Re : [WIN32]Histoires de couleurs...

vecchio56

Administrateur CodeS-SourceS
pour la couleur de fond, c'est la valeur de retour qui importe

HBRUSH hRedBrush = CreateSolidBrush(255);

...

case WM_CTLCOLORSTATIC: {
if( GetWindowLong((HWND)lParam, GWL_ID) == ID_ERREUR ) {
SetTextColor( (HDC)wParam, RGB(0xFF,0,0) );
SetBkMode( (HDC)wParam, TRANSPARENT );
return (LRESULT)hRedBrush;
}

}
break;
lundi 7 juin 2004 à 18:30:29 | Re : [WIN32]Histoires de couleurs...

vecchio56

Administrateur CodeS-SourceS
au temps pour moi j'ai dit n'importe quoi
Par contre j'ai essayé ce que tu as dit, et les fonds restent gris...
lundi 7 juin 2004 à 18:35:21 | Re : [WIN32]Histoires de couleurs...

Jeffray


çà y est j'ai compris : le problème venait du fait que l'instruction return se trouvait dans le if. Dans les autres cas (et donc pour les edit readonly), le case ne renvoyait rien.

Pour modifier seulement la couleur du texte de ce static, il faut faire comme ceci :

case WM_CTLCOLORSTATIC: {
SetBkMode( (HDC)wParam, TRANSPARENT );
if( (GetWindowLong((HWND)lParam, GWL_ID)) == ID_ERREUR ) {
SetTextColor( (HDC)wParam, RGB(0xFF,0,0) );
}
return (LRESULT)GetStockObject(NULL_BRUSH);
}
break;


Merci !
lundi 7 juin 2004 à 18:38:16 | Re : [WIN32]Histoires de couleurs...

Jeffray


>>> Par contre j'ai essayé ce que tu as dit, et les fonds restent gris...

Ben alors là, je ne comprends pas. bizarre...
lundi 7 juin 2004 à 18:44:20 | Re : [WIN32]Histoires de couleurs...

vecchio56

Administrateur CodeS-SourceS
peu importe, ce n'est pas ce que tu veux faire
lundi 7 juin 2004 à 23:13:52 | Re : [WIN32]Histoires de couleurs...

Jeffray


Arf !!!
Finalement, je me suis aperçu en faisant la modification ci-dessus que j'avais un gros bug d'affichage dans mon programme, avec les fameux edit.
Et j'ai enfin trouvé la solution : mon code du début était bon, mais j'avais oublié un détail très important de la documentation, à propos du message WM_CTLCOLORSTATIC :

Default Action

The DefWindowProc function selects the default system colors for the static control.


Voilà le pourquoi :o)


Cette discussion est classée dans : code, texte, edit, win32, readonly


Répondre à ce message

Sujets en rapport avec ce message

Coloration de texte dans un EDIT (API WIN32) [ par Nebula ] ---Hum, apparemment mon premier post n'est pas passé, je retente le coup !---Tout est dit dans le sujet...Petites précisions : je ne travaille qu'en C Coloration de texte dans un EDIT (API WIN32) [ par Nebula ] Tout est dit dans le sujet...Petites précisions : je ne travaille qu'en C, et j'aimerais savoir si la chose est possible, car les RICHEDIT sont (beauc générer code api win32 [ par zwei ] bonjour à tous,lorsqu'on crée une fenetre avec des boutons avec la MFC sous VC++ par exemple, le code est générer automatiquement.existe t-il la meme Comment faire un \n dans un edit? [ par by_rabbit_08 ] Bonjour!Grâce à la fonction SetDlgItemText, je cherche à inscrire du texte dans un edit. Dans ce texte, il y a un \n pour un retour à la ligne.Mais lo recuperer texte edit box [ par etienne22 ] Bonjours a tous,Je travail sous visual c++ 2005 et j'aimerai savoir comment recuperer le texte tape par l'utilisateur de mon programme dans un variabl Pb Edit Control [ par issamery ] bonjour, j'ai une application MDI sous VC++ 2009, j'y ai inseré un chrono, que je voudrais qu'il s'affiche dans un edit control mis dans un pannel, lecture d'un fichier texte [ par noussa44 ] Bonjour à tous, j'ai des nombres réels dans un texte je veux stocker ces réels dans un tableau. J'ai fait un petit code mais ca marche pas[^^yeuxenl ENTER dans une zone de texte [ par anthraxx ] Comment on fait pour que lorsque l'utilisateur, en train de taper un texte dans un controle "EDIT", tape entrée, une fonction soit appelée?J'ai pas tr Besoin d'aide pour Directx 8/9 [ par TheBestofComputer ] Je voudrais savoir quelle est le code pour crée un texte en 3D(le plus simple possible) et le code pour ajouter une texture a une vertrice ainsi qu'au


Nos sponsors


Sondage...

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,546 sec (4)

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