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

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

changer couleur texte


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

changer couleur texte

mercredi 5 décembre 2007 à 16:30:11 | changer couleur texte

kam42

salut à tous ;
j'ai un gros probleme; j'ai programmé l'ouverture d'un fichier texte en MFC que j'affiche dans la vue. Mon souci est que je dois changer le fond d'un seul mot dans le texte et je n'y arrive pas. je connais que la fonction setBkColor() , mais cele ci change carrement tout le fond du texte donc ça m'arrange pas .

Exist-il une fonction pour ça ?
es ce que je devrais choisir un autre conteneur pour le texte par exple(CrichEdit, CEdit,....) plu^tôt que la vue ?

voici mon code d'affichage :

void CMotifView::OnDraw(CDC* pDC)
{
 CMotifDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;

 // TODO : ajoutez ici le code de dessin pour les données natives
 // je verifie que le fichier est ouvert
 if(pDoc->m_ouvertdoc==true)
 {
 // conteneur qui contirndra le texte 
 CRect rect ;
 GetClientRect(&rect);
 // ecriture du texte dans la vue active du document
 int n= strlen(pDoc->m_pbuf) ;
 pDC->DrawText((pDoc->m_pbuf),n, &rect,0);
  }
}
merci d'avance

mercredi 5 décembre 2007 à 16:40:04 | Re : changer couleur texte

BruNews

Administrateur CodeS-SourceS
Prends un richedit.

ciao...
BruNews, MVP VC++
samedi 8 décembre 2007 à 00:28:58 | Re : changer couleur texte

kam42

salut à tous ;
j'ai essayé avec un richedit, mais je crois que là n'est pas le probleme. parceque meme avec ça je ne peux modifier la couleur ou le fond que de tout le texte, or moi je veux juste modifier une partie du texte.

j'ai eu une idée pour ça: decomposer mon texte en trois CStrings

le premier CString sera les caracteres avant le  mot ke je veux modifier
le deuxieme CString sera le mot ke je veux modifier
et le troisieme sera les caracteres apres le mot ke je veux modifier

et juste avant d'afficher le deuxieme CString je change la couleur du pen

le probleme est que je sais pas comment afficher trois variables dans la vue , l'une apres l'autre.

t'aurais pas une idée pour ça ? merci d'avance
samedi 8 décembre 2007 à 09:22:19 | Re : changer couleur texte

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Tu as regardé les messages du richdit dans MSDN ? il y a tout ce qu'il faut.

ciao...
BruNews, MVP VC++
dimanche 9 décembre 2007 à 14:08:32 | Re : changer couleur texte

kam42

merci BruNews;

j'ai bien cherché, je vois comment ça fontionne mais j'arrive pas à savoir ou placer mon code.

Mon probleme actuellement :
quand j'essaye dans la methode Oninitialupdate(), ça marche niklel au lancement du programme, le code est le suivant:
void CRichView::OnInitialUpdate()
{
 CRichEditView::OnInitialUpdate();
 CRichEditCtrl& theCtrl=GetRichEditCtrl();
 CString str="kamano" ; ;
 theCtrl.SetWindowText(str);
 theCtrl.SetSel(0,4);//select hello as the word to be formatted with different color
 CHARFORMAT cf;
 cf.cbSize = sizeof(CHARFORMAT);
 cf.dwMask = CFM_COLOR ;
 cf.crTextColor = RGB(255,0,0);
 //cf.bCharSet="hmfcjhcccccgh" ;
 cf.dwEffects = 0;//we do not want CFE_AUTOCOLOR , since this will choose GetSysColor value.
 theCtrl.SetWordCharFormat(cf);
 theCtrl.SetSel(0,0);//now, deselect text
 // Définir les marges d'impression (720 twips = 1/2 pouce)
 SetMargins(CRect(720, 720, 720, 720));
}
le probleme avec cette methode est que ça se produit qu'une seule fois, au lancement du programme. alors j'ai essayé de mettre ce code dans le OnPaint() pourque ça s'actualise en fonction du booleen
void Cessai2View::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 // TODO : ajoutez ici le code de votre gestionnaire de messages
 // N'appelez pas CRichEditView::OnPaint() pour la peinture des messages
 Cessai2Doc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;
 
 CString str="jetestemonprogramme ";
 dc.TextOut(0,0,str) ;
 if(pDoc->m_ouvertdoc1==true)
 {
 CRichEditCtrl& theCtrl=GetRichEditCtrl();
 GetWindowText(str) ;
 theCtrl.SetSel(0,4);//select hello as the word to be formatted with different color
 CHARFORMAT cf;
 cf.cbSize = sizeof(CHARFORMAT);
 cf.dwMask = CFM_COLOR ;
 cf.crTextColor = RGB(255,0,0);
 //cf.bCharSet="hmfcjhcccccgh" ;
 cf.dwEffects = 0;//we do not want CFE_AUTOCOLOR , since this will choose GetSysColor value.
 theCtrl.SetWordCharFormat(cf);
 theCtrl.SetSel(0,0);//now, deselect text
 // Définir les marges d'impression (720 twips = 1/2 pouce)
 SetMargins(CRect(720, 720, 720, 720));
 

 }
}
mais ce code ne marche pas !
Alors je serai très joyeux que tu me donnes une piste.
merci d'avance

dimanche 9 décembre 2007 à 15:43:59 | Re : changer couleur texte


Cette discussion est classée dans : texte, changer, rect, vue, pdoc


Répondre à ce message

Sujets en rapport avec ce message

Changer de police [ par laurielle ] J'aimerais mettre en gras ,avec une police un peu plus grande que celle par défaut, le texte d'un bouton ou d'un texte static, en MFC. Faut-il nécessa prob setwindowtext [ par flatou ] Probleme tout con, je veux changer le texte d'un static (ou d'un editbox), pour cela j'utilise SetWindowTest(). Le prob est que le nouveau texte se su Changer le texte dans la barre des titres (Win32 API) [ par Viper31 ] Salut tout le monde !!J aimerai savoir si quelqu'un sait comment changer le texte dans la barre des titres (caption) sachant que ma fenetre est une bo 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 Changement de vue [ par james ] SalutJe desire changer de vue dans une appli du type document /vue.j'ai deux Classes derivant de la classe CFormViewet en appuyant sur un bouton d'une Changer le texte d'une messagebox [ par ggoufa ] Salut a tous,je voudrais savoir comment on change le texte des boutons d'une messagebox (ex : cancel en quitter)Serais ce possible aussi de rajouter d changer couleur texte dans richedit [ par melkiorlenecrarque ] Comment changer la couleur du texte ecrit dans une richedit ? pourquoi:hdc = BeginPaint(GetDlgItem(hDlg, IDC_EDIT_RECU), &paintstruct);SetTextColor(hd 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 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 [API] Changer le texte d'un static [ par tarretg ] Bonjour,Je développe une petite application en Win32.Lorsque l'utilisateur fait un choix sur une ComboBox, je voudrais que la valeur de mes controles


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 : 5,522 sec (3)

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