begin process at 2012 05 28 15:38:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

changer couleur texte dans richedit


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

changer couleur texte dans richedit

jeudi 10 février 2005 à 13:07:23 | changer couleur texte dans richedit

melkiorlenecrarque

Membre Club

Comment changer la couleur du texte ecrit dans une richedit ?
 pourquoi:

hdc = BeginPaint(GetDlgItem(hDlg, IDC_EDIT_RECU), &paintstruct);
SetTextColor(hdc, RGB(255, 0, 0));

ne marche pas?
merci

jeudi 10 février 2005 à 14:54:12 | Re : changer couleur texte dans richedit

yoyo269

Membre Club
Salut melkiorlenecrarque,

après avoir moi aussi galéré sur les richedits je commence à les comprendre un peu mieux.
Je suis donc heureux de partager mes connaissances  (blablabla...)
Voilà ce qui t'intéresse pour changer la couleur du texte :

CHARFORMAT2 Format;
CHARRANGE Selection;
ZeroMemory(&Format, sizeof(CHARFORMAT2));
Format.cbSize = sizeof(CHARFORMAT2);
Format.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE | CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
Format.dwEffects = 0;
Format.yHeight = 170;
Format.yOffset = 0;
Format.crTextColor = RGB(0,0,0);
Format.bCharSet = ANSI_CHARSET;
Format.bPitchAndFamily = DEFAULT_PITCH;
sprintf(Format.szFaceName, "%s", "MS Sans Serif");
Selection.cpMin = 0;
Selection.cpMax = strlen(TexteContenuDansLeRichEdit);
SendMessage(Handle, EM_EXSETSEL, 0, (LPARAM) &Selection);
SendMessage(Handle, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &Format);

J'espère que ça t'auras bien aidé.
Si t'as des questions là-dessus, je suis dispo.

YOYO, @+.
YOYO
jeudi 10 février 2005 à 15:41:34 | Re : changer couleur texte dans richedit

melkiorlenecrarque

Membre Club
ok merci yoyo sa ma bien aidé, j'étais parti plutot dans une PARAFORMAT2 mais je savais pas utiliser le membre wShadingStyle .

sinon la sa me change la couleur de tout le texte,
tu pe me donner une piste pour changer la couleur en cours d'utilisation ?

merci yoyo
jeudi 10 février 2005 à 15:56:37 | Re : changer couleur texte dans richedit

yoyo269

Membre Club
En fait t'as juste à régler la sélection.
Selection.cpMin = 0; // pour le minimum
Selection.cpMax = 2;// pour le maximum

Ce code là va te sélectionner les 2 ou 3 premiers caractères.

YOYO, @+.
YOYO
jeudi 10 février 2005 à 19:15:52 | Re : changer couleur texte dans richedit

melkiorlenecrarque

Membre Club
oui j'arrive à mettre en couleur les mots souhaités, mais à chaque fois que je remet un texte en couleur dans le richedit, les caracteres precedant redeviennent noir !!
jeudi 10 février 2005 à 19:25:33 | Re : changer couleur texte dans richedit

yoyo269

Membre Club
Ca c'est bizarre.
Chez moi ça fonctionne nickel (ça me sert pour un chat style msn messenger).
Fais voir ton code pour que je puisse y voir un peu plus clair.

YOYO, @+.
YOYO
jeudi 10 février 2005 à 19:46:22 | Re : changer couleur texte dans richedit

melkiorlenecrarque

Membre Club

#include <winsock2.h>
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include <stdio.h>
#include "resource.h"

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib,"comctl32.lib")

#define WM_SOCKET WM_USER+5


HINSTANCE hinst;
HWND hDlg;
HICON icon;
CHARFORMAT2 Format;
CHARRANGE Selection;;

WSADATA WSAData;
SOCKET sock;
SOCKADDR_IN sin;

char data[255];
char recu[10000];


void connection_serveur();
void envoyer();
void recevoir();
void ajouter_message(LPCTSTR texte);
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);


// fonction gérant les message concernant la boite de dialogue principale
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
     case WM_INITDIALOG:
   hDlg = hdlg;
   SetDlgItemText(hDlg, IDC_EDIT_RECU, "SendMessage, par melkior le necrarque.\r\n\r\n\r\n");
   EnableWindow( GetDlgItem(hDlg, IDC_BUTTON_ENVOYER), FALSE);
   icon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON_ROUGE));
   SetClassLong(hDlg, GCL_HICON, (LONG)icon );
   SetTimer(hDlg, 1, 2000, NULL);
   break;
 
  case WM_TIMER:
   connection_serveur();
   KillTimer(hDlg, 1);
   break;

  case WM_CTLCOLOREDIT:
   if(GetWindowLong((HWND)lParam, GWL_ID) == IDC_EDIT_RECU)
   {
    SetTextColor((HDC) wParam, RGB(255,0,0));
         }
   break;

  case WM_SOCKET:
   {
    switch(WSAGETSELECTEVENT(lParam))
    {
     case FD_CONNECT:
      EnableWindow( GetDlgItem(hDlg, IDC_BUTTON_ENVOYER), TRUE);
      icon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON_VERT));
      SetClassLong(hDlg, GCL_HICON, (LONG)icon );
      ajouter_message("connection établie\r\n\r\n");
      break;
     case FD_READ:
      recevoir();
      break;
     case FD_CLOSE:
      EnableWindow( GetDlgItem(hDlg, IDC_BUTTON_ENVOYER), FALSE);
      icon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON_ROUGE));
      SetClassLong(hDlg, GCL_HICON, (LONG)icon );
      break;
    }
   }

     case WM_COMMAND:
      switch(wParam)
   {
   case IDC_BUTTON_ENVOYER:
    envoyer();
    break;
   case IDCANCEL:
    EndDialog(hDlg,0);
      }
   default:
    break;
  }
  return 0;
}

// fonction principale, c'est la premiere executée
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
 InitCommonControlsEx(NULL);
 LoadLibrary("RICHED32.DLL");
 hinst = hInstance;
 DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_CLIENT), hDlg, AppProc);
    return 0;
}

void connection_serveur()
{
 ajouter_message("Connection à Niconetx");
 Sleep(1000);
 ajouter_message(".");
 Sleep(1000);
 ajouter_message(".");
 Sleep(1000);
 ajouter_message(".\r\n");
 Sleep(1000);
 
 WSACleanup();
 WSAStartup(MAKEWORD(2,0), &WSAData);

 sin.sin_addr.s_addr = inet_addr("192.168.0.16");
 sin.sin_family  = AF_INET;
 sin.sin_port  = htons(4100);
 sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

 bind(sock, (SOCKADDR *)&sin, sizeof(sin));

 WSAAsyncSelect(sock, hDlg, WM_SOCKET, FD_CONNECT | FD_READ | FD_CLOSE);
 
 connect(sock, (LPSOCKADDR)&sin, sizeof(sin));
}

void envoyer()
{
 ZeroMemory(data, 250);
 GetDlgItemText(hDlg, IDC_EDIT_ENVOI, data, 250);
 send(sock, data, sizeof(data), NULL);
 SetDlgItemText(hDlg, IDC_EDIT_ENVOI, "");
 strcat(data, "\r\n");
 ajouter_message(data);
}

void recevoir()
{
 ZeroMemory(data, 250);
 recv(sock, data, sizeof(data), NULL);
 strcat(data, "\r\n");
 ajouter_message(data);
}

void ajouter_message(LPCTSTR texte)
{
 ZeroMemory(recu, 10000);
 GetDlgItemText(hDlg, IDC_EDIT_RECU, recu, 10000);
 strcat(recu, texte);
 SetDlgItemText(hDlg, IDC_EDIT_RECU, recu);
 UpdateWindow(hDlg);

 ZeroMemory(&Format, sizeof(CHARFORMAT2));
 Format.cbSize = sizeof(CHARFORMAT2);
 Format.dwMask = CFM_COLOR;
 Format.crTextColor = RGB(255,0,0);
 Selection.cpMin = strlen(recu)-strlen(data);
 Selection.cpMax = strlen(recu);
 SendMessage(GetDlgItem(hDlg, IDC_EDIT_RECU), EM_EXSETSEL, 0, (LPARAM) &Selection);
 SendMessage(GetDlgItem(hDlg, IDC_EDIT_RECU), EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &Format);

}

vendredi 11 février 2005 à 18:38:52 | Re : changer couleur texte dans richedit

yoyo269

Membre Club
Par contre juste pour info, quand tu as la réponse à ta question, pense à cliquer sur le bouton Réponse acceptée de la réponse concernée.

Je me penche sur ton code. (j'espère que personne va se ramener par derrière ).

YOYO, @+.
YOYO
vendredi 11 février 2005 à 18:46:43 | Re : changer couleur texte dans richedit

yoyo269

Membre Club
Déjà commence par mettre ça :

CHARFORMAT2 Format;
CHARRANGE Selection;

dans ta fonction ajouter_message et pas en global, ça sert à rien.
Sinon à part ça je vois pas.
Tiens-moi au courant.

YOYO, @+.
YOYO
samedi 12 février 2005 à 11:51:47 | Re : changer couleur texte dans richedit

melkiorlenecrarque

Membre Club

c'est fait !!!! je n'ai plus de cheveux!!!!

Je ne vois vraiment pas pourquoi lorsque je rajoute un texte, la ligne precedente redevient noir !!!!!

Y a pas moyen de changer la couleur par defaut?
un peu comme dans un notepad?

merci à mon futur sauveur !!! 


1 2

Cette discussion est classée dans : texte, changer, couleur, hdc, richedit


Répondre à ce message

Sujets en rapport avec ce message

Couleur du texte [ par Vortex99011 ] En fait j'ai créé un une EditBox, mais je voudrais bien changer la couleur du texte. J'ai jusque là utilisé l'API CreateFont(...) pour changer la poli Changer la couleur d'un texte en mode console, et faire clignoter [ par Tank01 ] Bonjour,Je suis débutante en c++, je travail sous dev c++4, je programme en mode console, voila, je souhaiterais pouvoir écrire certaines ligne en cou richedit [ par julienbj ] Je souhaiterais changer la couleur de certains mots contenus dans un richedit. Je sais le faire lorsque je sélectionne le mot, ou lorsque je veux chan COuleur dans un textedit [ par tetedemul ] Bonjour, je développe un ide pour l'asm, et je souhaite faire une coloration syntaxique.Je sais comment la faire (traitement ok), je l'ai réalisé sous Changer la couleur de texte d'un controle static [ par Gpic ] Salut à tous, ya t'il un moyen de changer la couleur du texte d'un controle static sous Visual Studio.NET. Merci Comment changer la couleur du text sous visual c++ 6 [ par Haykel2006 ] Pouvez vous me dire comment changer la couleur d'affichage des messages sous vc++6, avec turbo c j'utilise la fonction :  textcolor . Aussi comment re changer la couleur d'un MSChart control en MFC Visual sudio [ par DEGLINGO76 ] Bonjour tout le monde ! Je cherche à modifier la couleur d'un "VtChChartType3dBar" suivant une valeur qui aura trois seuil (entre 0 et 10, 11 et 20, changement de couleur du texte uniquement pour rich edit?? [ par youpiyoyo ] j'ai réaliser un sous classement pour une edit control et WM_MOUSEMOVE egalement préparer pour celle-cij'essaye de changer la couleur du texte selecti Modifier les propriétés des controles boutons (image, texte, couleur, ...) [ par skirby ] Bonjour tout le monde,J'aurais voulu savoir si il était possible de créer des boutons sur lesquels on pourrait :- afficher une icone (depuis un fichie Changé la couleur d'un bouton [ par KsmoinO ] Boujour,je désire créer, un bouton avec les styles : BS_CHECKBOX et BS_PUSHLIKE et je désire qu'en fonction de l'état de se bouton il s'affiche de cou


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

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