Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : || Imprimer || RichEdit || C++ || Visual 6 || >> [ Archives / Au secours ] (joh)

mercredi 23 février 2005 à 10:12:21 | || Imprimer || RichEdit || C++ || Visual 6 || >>

joh

   Je suis entrain de developper une sorte de WordPad sous VisuaC++ 6 en utilisant un RichEdit.

   Mon probleme est au niveau de l'impression,car si j ecrit en gras ds le RichEdit l'imprimante ne le sait pas que se mot est en gras,j ai developper des fonctions me permettant de savoir si un mot ou un caractere  est souligner,gras ou italique et j aimerai savoir comment faire pour testé caractere par caractere tapé ds le RichEdit lors de l'envoie de l'impression   a fin de lui spécifier le format de chaque caractère
(Me faudrait une sorte de RichEdit.GetCaratere( ) ,il y en a pas  car si je stock tout le texte dans un ex:CString je perd les différents format (Gras,Police,taille,italique,......) ).


                                                                Joh


jeudi 24 février 2005 à 18:33:40 | Re : || Imprimer || RichEdit || C++ || Visual 6 || >>

yoyo269

Membre Club
Salut joh,

ya peut-être une astuce que je te propose.
Tu enregistres ce que tu as dans ton RichEdit au format RTF, et le fichier que tu as ainsi créé tu l'imprimes avec :

ShellExecute(NULL, "print", NomDuFichier, NULL, NULL, SW_HIDE);

Tiens-moi au courant.

YOYO, @+.
YOYO

vendredi 25 février 2005 à 09:28:11 | Re : || Imprimer || RichEdit || C++ || Visual 6 || >>

joh

Réponse acceptée !

Salut, merci pour de ton aide mais  j ai trouver  une solution un peut bourrin mais qui marche !!! .
Passe une bonne journée et surtout un bon week end !!!!
                         joh

Code:

 .....
 CString sBuffer;
  int iformat ;
  long iDeb = 0, iFin = 1, iFinN = 0, iNbCara = 0;
  bool RetourChariot ;
  iNbCara = m_ctrlREdit.GetTextLength( );

  for( iDeb=0 ; iDeb<iNbCara ; iDeb++ )
  {
   m_ctrlREdit.SetSel(iDeb,iFin);
   m_ctrlREdit.GetSelText((LPSTR) sBuffer.GetBuffer((iFin-iDeb)+1));
   sBuffer.ReleaseBuffer ();
//   Fonction testant le format de mes caractères
   Gras();
   Italique();
   Souligner();
   PoliceduText();
   TailleduText();

   // Teste si c'est un retour chariot.
   if(sBuffer == "")
   {
    iFinN = iFin + 1 ;
    m_ctrlREdit.SetSel(iDeb,iFinN);
    m_ctrlREdit.GetSelText((LPSTR) sBuffer.GetBuffer((iFinN-iDeb)+1));
    sBuffer.ReleaseBuffer ();
       if(sBuffer.GetAt (0) == 13)
       {
            iFin++ ;
           iDeb++ ;
           RetourChariot = true ;
       }
   }
   else
   {
       RetourChariot = false ;
//    if(sBuffer == " ")
//     MessageBox("C'est un espace","Caractère",MB_OK);
//    else
       if(sBuffer != " ")
       { 
           if(iGras == 1 && iItalique == 1 && iSouligner == 1)
           iformat = 0 ;
     else
     {
         if(iGras == 1 && iItalique == 1)
             iformat = 1 ;
         else
         {
             if(iSouligner == 1 && iItalique == 1)
                 iformat = 2;
             else
             {
                 if(iSouligner == 1 && iGras == 1)
                     iformat = 3 ;
                 else
                 {
                     if(iGras == 1)
                         iformat = 4 ;
                    else if(iSouligner == 1)
                             iformat = 5 ;
                         else if(iItalique == 1)
                                 iformat = 6 ;
                             else
                                 iformat = 7 ;
        }
       }
      }
     }
    }
   }

   LOGFONT lf ;
   memset ( &lf, 0, sizeof(LOGFONT) ) ;
   lf.lfHeight = lTaille ;
   sprintf( lf.lfFaceName, "%s", sPolice.GetBuffer(0) ) ;

   switch(iformat)
   {
    case 0: // Gras - Italique - Souligner.
     lf.lfWeight = FW_BOLD ;
     lf.lfItalic = true ;   
     lf.lfUnderline = true ;
     break;
    case 1: // Gras - Italique.
     lf.lfWeight = FW_BOLD ;
     lf.lfItalic = true ;   
     lf.lfUnderline = false ;
     break;
    case 2: // Italique - Souligner.
     lf.lfWeight = FW_NORMAL ;
     lf.lfItalic = true ;   
     lf.lfUnderline = true ;
     break;
    case 3: // Gras - Souligner.
     lf.lfWeight = FW_BOLD ;
     lf.lfItalic = false ;   
     lf.lfUnderline = true ;
     break;
    case 4: // Gras. 
     lf.lfWeight = FW_BOLD ;
     lf.lfItalic = false ;   
     lf.lfUnderline = false ;
     break;
    case 5: // Souligner.
     lf.lfWeight = FW_NORMAL ;
     lf.lfItalic = false ;   
     lf.lfUnderline = true ;
     break;
    case 6: // Italique.
     lf.lfWeight = FW_NORMAL ;
     lf.lfItalic = true ;   
     lf.lfUnderline = false ;
     break;
    case 7: // Normal.
     lf.lfWeight = FW_NORMAL ;
     lf.lfItalic = false ;   
     lf.lfUnderline = false ;
     break;
    default :
     break ;
   }
   
   dc.SelectObject(&pOldFont);
   fonte.DeleteObject();
   fonte.CreateFontIndirect(&lf);
   pOldFont = dc.SelectObject(&fonte);

   if( (iDeb >= 1) && (RetourChariot == false) )
   {
       r2.left = r2.left + lTaille + 1;
    dc.DrawText(sBuffer, sBuffer.GetLength(), r2, DT_LEFT|DT_WORDBREAK);
   }else if(ReChar == true)
    {
     r2.left = 0 ;
     r2.top = r2.top + lTaille + 1 ;
     dc.DrawText(sBuffer, sBuffer.GetLength(), r2, DT_LEFT|DT_WORDBREAK);
    }else
     dc.DrawText(sBuffer, sBuffer.GetLength(), r2, DT_LEFT|DT_WORDBREAK);
   }
   iFin ++ ;
  }


////////////////////////////////////////////
// Test si le mot selectionné est en Gras .
void  CMailing::Gras()
{
 CHARFORMAT2 cfa ;
 m_ctrlREdit.GetSelectionCharFormat(cfa);
 int iFormat = cfa.dwEffects ;

 if((iFormat == GRAS)||(iFormat == G_S)||(iFormat == G_I)||(iFormat == G_I_S))
  iGras = 1;
 else
  iGras = 0;
}

////////////////////////////////////////////////
// Test si le mot selectionné est en Italique .
void  CMailing::Italique()
{
 CHARFORMAT2 cfa ;

 m_ctrlREdit.GetSelectionCharFormat(cfa);
 int iFormat = cfa.dwEffects ;

 if((iFormat == ITA)||(iFormat == S_I)||(iFormat == G_I)||(iFormat == G_I_S))
  iItalique = 1;
 else
  iItalique = 0;
}

//////////////////////////////////////////////
// Test si le mot selectionné est Souligner .
void  CMailing::Souligner()
{
 CHARFORMAT2 cfa ;

 m_ctrlREdit.GetSelectionCharFormat(cfa);
 
 int iFormat = cfa.dwEffects ;

 if((iFormat == SOUL)||(iFormat == G_S)||(iFormat == S_I)||(iFormat == G_I_S))
  iSouligner = 1;
 else
  iSouligner = 0;
}

//////////////////////////////////
// Récupérer la taille du Texte .
void CMailing::TailleduText()
{
 CHARFORMAT2 cfa ;
 m_ctrlREdit.GetSelectionCharFormat(cfa);
 lTaille = cfa.yHeight;
}

/////////////////////////
// Récupérer la Police .
void CMailing::PoliceduText()
{
 CHARFORMAT2 cfa ;
 m_ctrlREdit.GetSelectionCharFormat(cfa);
 sPolice = cfa.szFaceName ;
}




Cette discussion est classé dans : visual, caractere, imprimer, richedit, gras


Répondre à ce message

Sujets en rapport avec ce message

RichEdit et controle de la souris [ par cannabis ] Voila j'en é marre j'ai tjs po trouvé kje cherche un moyen de savoir en faite kel le caractere ou la position du caractere enfin une variable qui me d Imprimer un fichier depuis une application Visual C++ [ par ideschamps ] Bonjour à tous,Voilà je suis en train de développer une application en visual c++ dans laquelle je crée un fichier.Je voudrai pouvoir l'imprimer, aprè imprimer une bitmap en visual c++ 6.0 [ par emilie_512 ] je doit créer un programme en c++, qui doit imprimer deux bitmap différent selon une condition.malheureusement je ne sais absolument pas comment faire Imprimer un RichEdit sur une Form [ par 2712 ] - Comment imprimer une Form avec un RichEdit.- Avec Form1->Print(), toute la Form s'imprime sauf le contenu du RichEdit.- Merci. RichEdit [ par bou1024 ] Salut !Je suis en train de développer un logiciel avec C++ Builder 6 et j'ai un petit problème !J'aimerai faire un rapport automatique pour imprimer, probleme de richedit ss visual C++ [ par ptiriv53 ] salut voila j'ai un probleme avec ma dialog box, dès que je met un richedit l'app ne se lance puis se ferme directement j'ai bien vu le meme problem mettre en gras sous visual c++ [ par blizzon ] Bonjour.je voudrai, en appuyant sur un bouton de mon interface MFC, mettre le texte sélectionné de ma "sample edit box" en gras.aidé moi, SVP! blizzon || C++ || RichEdit >> [ par joh ] Bonjour,J ai besoins de récuperer caractere par caractere de mon RichEdit afin de l'identifier pour savoir s'il est en Gras,Italque ,Souligner,....,l' imprimer un projet sur visual studio [ par stgi02 ] Aspect bouton sous visual studio 2006 [ par trabbart ] Bonjour,J'avais un projet commencé sous visual studio 5.0, aujourd'hui j'ai recompilé avec visual studio 2003 sous XP et je ne bénéficie pas de la mis


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.