Differentes couleurs dans un edit multilines

raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011 - 31 déc. 2007 à 18:41
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011 - 8 janv. 2008 à 02:44
salut a tous.

je cherche un moyen de faire une coloration syntaxique mais, ???, j'ai un edit multiline, et je voudrais que le "P" soit vert, que le "N" soit jaune.mais je ne vois pas dutout comment aborder la chose.Je sais au depart, lui donner des couleurs (le fond de la lettre, le background, la couleur de la lettre, mais pour toutes les lettres ecritent dans cette edit.

Si vous avez une idée, je suis preneur.
Bonnes fetes.
bye.

24 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 22:37
L'EDIT n'est pas fait pour ça, prends un richedit.

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
1 janv. 2008 à 18:14
ok.

merci.
bye.
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
2 janv. 2008 à 13:39
salut, salut, apres de bonnes fetes.

J'ai donc pris un RichEdit, mais mon prog se ferme seul, j'ai un souci, je ne peut pas creer de richedit assi bien dans le fichier.rc
que dans le fichier.asm !!!

J'ai du zapper quelque chose, j'ai essayé les 3 richedit (richedit, richedit20A et 30A), amis rien n'y fait ?

vous avez une petite idée de la raison de ceci ?

merci.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 janv. 2008 à 19:14
Tout au début: LoadLibrary("Riched20.dll");

Si besoin dans ton prog:
InitCommonControls();
aussi au début.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
2 janv. 2008 à 19:57
merci.

harffff, pardon de cette question a la va vite.
mais nous dirrons que c'est d'la faute de 2008, hihihi, .

apres quelque verres,  j'ai fait des essais sur ce richedit pas des masses expliqué a part comme d'habitude chez iczelion,
et ca gaze.Ca correspond tout a fait a ta reponse,.

Sauf que je ne doit pas mettre un "FreeLibrary", sinon, aveuglement, si je n'avais pas eu SI, je n'aurrai pas vu une exception cachée.

bye.
harf, les fetes sont pas encore finies !!
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
5 janv. 2008 à 19:13
salut, salut.

J'ai donc essayé la methode de coloration syntaxique de MR iczelion, mais harf, ca ne correspond pas, ou y'a un prob, car il charge un fichier.

Je voudrais savoir, juste le debut de l'astuce pour, si je rendre la lettre "p" dans le richedit qu'il soit vert.
la lettre "A" qu'il soit bleu,....., MAIS en TEMP REEL.

J'en ai lu des sources, et des explications, mais ca n'a jamais correspondu.
je ne vois plus quel messages intercepter,....

Pour l'instant je subclass le Richedit, et dans son message WM_PAINT, (dans la fonction subclass), j'ecrit par drawtext, harf, c'est galere.

Je seche, j'e fait appel a votre savoir.
bonne soirée.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 janv. 2008 à 19:30
EN_MSGFILTER notification pour intercepter le clavier ou souris.

EM_SETCHARFORMAT pour formatage texte (police, couleurs, etc.).

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
5 janv. 2008 à 20:08
ok.
merci.

EM_SETCHARFORMAT, ben ok, je m'en sert deja, mais bon, je pense qu'on ne sait pas compris au niveau du context.
EM_SETCHARFORMAT ou ?, dans le traitement de WM_PAINT de la proc de subclass ?, ou,ou ?

je vais chercher encore.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 janv. 2008 à 20:18
Invalide ton WM_PAINT si tu utilises EM_SETCHARFORMAT.

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
5 janv. 2008 à 20:42
ok.
hi, effectivement, c'est clair.
bye.
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 13:38
salut, salut.

Ca marche nickel le EM_SETCHARFORMAT, MAIS, ben oui, hihi, y'a toujour un mais.
pour bien capter, je fait un teste sur un richedit, je lui envois les messages suivant:

                invoke SendDlgItemMessage,hWnd, IDC_COLOR, WM_CHAR, "R",0
                invoke SendDlgItemMessage,hWnd, IDC_COLOR, WM_CHAR, 0Dh,0
                invoke SendDlgItemMessage,hWnd, IDC_COLOR, WM_CHAR, 0Ah,0
                invoke SendDlgItemMessage,hWnd, IDC_COLOR, WM_CHAR, " ",0

Quand je récupere, le contenu du richedit, il me manque le 0Dh,0Ah (retour ligne qui marche sur un edit).

J'ai donc dans le buffer, le "R" et le " "(espace) a suivre.
OU est donc passé mon RETOUR LIGNE ??????????????

Voila, si vous avez une explication, je suis preneur, hi.
merci.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2008 à 15:04
si tu envoyais un ENTER (keydown keyup) ?

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 15:23
Heuuuu, ok.

mais la touche entrer n'est pas les codes suivavants   0Dh,0Ah,   et en decimale 13,10   ?
Car dans un edit, ca fonctionne, je me demande si ce n'est pas un STYLE a mettre en plus dans le Richedit,
car j'ai cru comprendre que le richedit n'acceptais que les codes rtf, mais bon, j'ai crée ma coloration syntaxique qu'hier, alors je cherche mais !!!???
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2008 à 15:41
code rtf alors que tu y vais à coups de SendMessage, quel rapport ?

VK_RETURN

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 16:16
harf.
je craint ne pas comprendre ta question.
parceque, je remplie mon richedit avec des mots(en majorité des lettres) de differentes couleurs en fonction des resultats de mon prog.Mon prog rempli donc ce richedit avec des :

invoke SendDlgItemMessage,hWnd, IDC_COLOR, WM_CHAR, "R",0      Pour y ecrire un R a la suite des lettres précédentent.Tu m'as dis que pour mon prob, il me fallait un richedit, et non un edit, c'est donc ce que j'ai fait (et je t'en remerci, car c'est pile poil ce que je voulais), mais j'ai garder les memes messages de remplissage qu'un edit, et ca fonctionne, sauf le retour ligne, !!!, hi.

Qu'as tu voulu dire ?
Comment coder RTF, j'ai chercher les différents code qu'un rtf peut prendre mais, bon, j'ai pas trouvé.

PS: je jette un oeil sur VK_RETURN.

et qu'est ce que \r\n que j'ai vu sur le web, c'est du codage richedit comme tu dis ?

merci.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2008 à 16:35
\r\n
représentation en C des 2 octets qui forment un saut ligne format Windows (13 et 10)

Autre chose:
une série de SendDlgItemMessage sur le même controle c'est plus que moyen comme code.
Utilise SendMessage et tu auras un PUSH de moins à chaque appel.

Essaie ceci:
SendMessage(hriched, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(hriched, WM_KEYUP, VK_RETURN, 0);

Sinon tu pourra insérer saut de ligne par EM_SETSEL (bien mettre sélection où il faut AVANT).

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 16:53
re.

Ok, c'est sympa pour l'optimisation, je vais m'en servir, (mais, je ne suis pas un fan de l'optimisation, cause = Quad core, d'une puissance dingue + cg d'enfer), passer "crysis sur ma machine en 2048, c'est un amuse gueule a l'apero, hi,.
d'ailleur mon prog ne peut tourner que sur ce genre de machine, vu, ce que je lui demande.
Mais, je vais utiliser ce que tu as dis, je comptais faire l'opti apres le prog TOTALEMENT fonctionnel, mais bon, ca ferra deja ca en moin,hi.

et pour le:   SendMessage(hriched, WM_KEYDOWN, VK_RETURN, 0);
                  SendMessage(hriched, WM_KEYUP, VK_RETURN, 0);

j'essaye sur ce pas.
merci.
bye.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2008 à 17:21
ah non stp, pas ce genre d'excuse pour écrire nimporte quoi. Si l'optimisation ne t'intéresse pas, faut demander sur un autre forum que asmfr et il y a longtemps que ton prog serait écrit avec un langage de plus haut niveau.

ciao...
BruNews, MVP VC++
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 17:44
re.

Ca gaze, ca fonctionne, hi, MAIS, hi, encore un mais, Il va falloir que je comprenne ceci, car envoyer un 0Dh en WM_CHAR
est completement ignoré par le richedit, alors que l'envoi d'un WM_KEYDOWN et apres un WM_KEYUP, envoi un 0Dh sans probleme, harf quel bouze.(enfin bon, je laisse tomber, car ce ne doit pas etre un prob, ca doit etre comme ca dans le RichEdit).

Harf, j'ai pas fini, car, il va falloir que je retranscrive ça avec la methode d' ICZELION avec son systeme d'interception de WM_PAINT,sniff,sniff,sniff.

encore merci.
bye.
0
raoulli Messages postés 93 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 25 avril 2011
6 janv. 2008 à 18:01
oups.

pardon,si,si, l'optimisation m'interresse, et c'est ce que je fait a la FIN, t'as pas compris, en generale je fait l'optimisation une fois mon prog fini.(ca me prend moin de temps).
et en ce qui conserne ta phrase:

il y a longtemps que ton prog serait écrit avec un langage de plus haut niveau.

hihihii, je suis peut etre nul en GDI et autre demonstration graphique,mais les 80% de mon prog necessite l'asm (pour des raison que tout le monde peut deviner), c'est juste l'aspet graphique que je ne connais pas,hi,

bye.
désolé pour l'optimisation, chaqun le fait en son temp, pourquoi optimiser un prog qui n'est pas fini, et qui fonctionne a merveille sans  opti, ca fonctionne deja extremement bien, moi, je pense, que l'opti se fait a la fin,car nous n'avont pas tous la science infuse.

PS: je ne vois pas le rapport entre un prog non optimisé et le forum asm !!!!!!!!!!!

bye.
0
Rejoignez-nous