begin process at 2012 05 29 10:41:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

editbox et couleur


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

editbox et couleur

dimanche 26 décembre 2004 à 16:24:49 | editbox et couleur

julienbj

Malgré une lecture des différentes sources et réponses sur le sujet, je n'arrive toujours pas à réaliser ce que je veux!

Je suis en train de faire une source générale sur les editbox, et je cherche à en changer les couleurs de texte et d'arrière-plan!
Cette source se voulant générale et intégrable dans de futures applications, je cherche à faire uniquement des fonctions que j'appelerai quand j'en aurais besoin!
Voici ma fonction de changement de couleur:

BOOL EDITChangeColor(t_edit edit, COLORREF back, COLORREF fore, BOOL VIEWERROR)
{
HDC hdcedit = GetDC(edit.handle);
if (SetBkColor(hdcedit, back) == CLR_INVALID)
{
if(VIEWERROR) EDITVoirErreur(GetLastError());
return FALSE;
}
if(SetTextColor(hdcedit, fore) == CLR_INVALID)
{
if(VIEWERROR) EDITVoirErreur(GetLastError());
return FALSE;
}
return TRUE;
}

typedef struct s_edit
{
HWND handle;
long id;
} t_edit;

Première erreur que je ne comprends pas, le HDC que je reçois n'est pas le meme que celui du wParam du message WM_CTLCOLOREDIT! (lecture des 2 et affichage dans un editbox à l'intérieur du case WM_CTLCOLOREDIT) Pourquoi et comment faire pour obtenir le bon HDC (autrement qu'en prenant le wParam puisque je ne veux pas passer le case WM_COLOREDIT!
Ensuite, je voudrais ne pas etre obligé d'appeler cette fonction dans WM_CTLCOLOREDIT, mais dans n'importequel autre fonction!
Par exemple par appui sur un bouton, ou par lecture d'une commande dans un fichier... Est-ce possible? Je pense que oui, mais je ne trouve pas comment! Il faut que j'integre les HBRUSH à la fonction, mais je ne sais pas où!
Savon
dimanche 26 décembre 2004 à 16:47:20 | Re : editbox et couleur

BruNews

Administrateur CodeS-SourceS
C'est bien dans WM_CTLCOLOREDIT que tu dois traiter et pour forcer l'appel de nimporte ou suffit d'un InvalidateRect().

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 17:39:45 | Re : editbox et couleur

julienbj

Pour l'instant, je l'appelle uniquement dans WM_CTLCOLOREDIT
Voici l'appel:

case WM_CTLCOLOREDIT:
return EDITChangeColor(lParam, RGB(...), RGB(...), TRUE);

=>J'ai changé le prototype de ma fonction et j'ai mis un HWND à la place du t_edit! (d'ou le lParam)

Mais rien ne se passe, l'editbox reste inchangé!
Alors que si je mets dans le prototype de la fonction un HDC à la place du t_edit (et je désactive alors le GetDC) ça fonctionne bien! Tu as une idée du pourquoi?
Je pense que le GetDC me renvoie pas le bon HDC, mais je sais pas comment faire pour obtenir un HDC sur mon editbox autrement que par GetDC! J'ai vu la fonction CreateDC, mais je ne comprends pas trop son fonctionnement

Sinon, merci pour l'idée du InvalideRect, c'est très fort!
Savon
dimanche 26 décembre 2004 à 17:58:37 | Re : editbox et couleur

BruNews

Administrateur CodeS-SourceS
Tu dois te servir du hdc donne par le systeme (wParam) dans WM_CTLCOLOREDIT.

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 18:16:18 | Re : editbox et couleur

julienbj

Et il y a vraiment aucun moyen de pas passer par wParam?
Je peux pas récupérer ce HDC par le handle du controle (qui est dans le lParam ET SURTOUT dans ma structure)?
Ou alors un moyen de changer les couleurs de l'editbox à partir de son handle plutot que par un HDC?

Et pour confirmation, un HDC, ça représente bien une sorte de zone graphique qui contiendrait dans mon cas
Savon
dimanche 26 décembre 2004 à 18:28:22 | Re : editbox et couleur

BruNews

Administrateur CodeS-SourceS
le hdc est l'identifiant de ton device context a repeindre au moment ou le system te le passe, c'est celui ci que tu dois utiliser.

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 18:47:27 | Re : editbox et couleur

julienbj

Oui, mais le problème c'est que je veux pas utiliser cette fonction dans le message WM_CTLCOLOREDIT mais dans une fonction qui est appeler quand je clique sur un bouton par exemple! Ca veut dire que je ne peux pas utiliser les wParam et lParam, la seule chose que je connais de mon editbox sont son handle et son identifiant (assigné avec SetWindowLong)

Sinon ce que je pourrais faire, c'est appeler moi meme cette fonction en faisant un SendMessage mais auquel cas il faut quand meme que je récupère le HDC de mon editbox
C'est a dire que dans ma fonction EDITChangeColor(...) je fais un SendMessage(Dlg, WM_CTLCOLOREDIT, ??, edit.handle). Tu penses que ça pourrait marcher?
Mais il faut encore que je récupere le HDC (avec GetDC?)
Savon
dimanche 26 décembre 2004 à 18:53:04 | Re : editbox et couleur

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
ben tu es tetu hein...
Siffit de mettre InvalidateRect(hedit, 0, 1); dans ton bouton et laisser le code dans WM_CTLCOLOREDIT

ciao...
BruNews, MVP VC++
dimanche 26 décembre 2004 à 18:57:20 | Re : editbox et couleur

julienbj

OK, comme ca c'est clait!

je te remercie, ça marche bien! (voir très bien!)
MERCI beaucoup pour le temps passé!
Savon


Cette discussion est classée dans : fonction, couleur, edit, wm, editbox


Répondre à ce message

Sujets en rapport avec ce message

couleur de fond d'une editbox [ par melkiorlenecrarque ] salut kan je coche la case read-only d'une edit box, L devi1 griée!pe ton chanG la couleur de fon d'une edit box?G essayé SetColor() mé lé parametre m Faire perdre le focus d'une editbox [ par Mastersam ] Bonjour, j'ai un léger soucis, je voudrais faire perdre le focus d'une edit box pour récuperer sa valeur après l'appui sur la touche entrer.J'ai essay Sous classement editbox [ par julienbj ] Je cherche à sous classer une editbox pour modifier son affichage. Je sous classe donc le message WM_PAINT pour pouvoir modifier l'apparence de l'edit modifier la couleur de font d'un edit box [ par imanewin32 ] j'ai besoin d'une fonction pour modifier la couleur de font d'un edit box dans une application MFC, car en le rendant enable tout devient gris et la Couleur du point où est situé le pointeur [ par Bloock ] Bonjour, J'essaie de faire une sorte de WM_PAINT et ScrollBar [ par AlexMAN ] Bonjour, Je dois dessiner quelque chose en fonction de la position d'une scrollbar, je me demandais si je pouvais créer un HDC memoire de la taille de problème avec edit box [ par mat74 ] salut à tous,voila je suis en train de faire une sorte de paint et j'ai un problème pour le choix de la couleur. J'ouvre une dialog box avec plusieurs 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 du highlight [ par SnOOpss ] Bonjour j'aimerais savoir si il existe un moyen de changer la couleur de surlignage dans un edit par example, j'ai testé avec SetSysColors() mais cett EDITBOX [ par timy94 ] Mon problème est le suivant: Je voudrais compter le nombre de changement de valeur dans un EditBox Le problème c'est que WM_COMMAND, est  envoyé par W


Nos sponsors


Sondage...

Comparez les prix

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 : 1,825 sec (3)

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