Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CRichEditCtrl Format auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.09.2004, 17:14 Uhr
~aburg
Gast


Hallo zusammen!

Ich habe ein Richt Edit-Ctrl, dass ich auch gut mit verschiedenen Formatierungen versehen kann. Mein Problem ist nun, wie kann ich von einem bestimmten Zeichen die Formatierung wieder auslesen? Ich kriege es beim besten willen nicht hin:



C++:
n   for(int i = 0; i < edit->GetTextLength(); i++)
   {
      edit->SetSel(i, edit->GetTextLength());
      edit->SetFocus();
      
      if(edit->GetSelectionCharFormat(cf) == CFM_ITALIC) {MessageBox("italic"); return;}
      

   }



Funktioniert leider nicht. Irgendeinen Tipp?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2004, 18:16 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cricheditctrl.3a3a.getselectioncharformat.asp
Der Rückgabewert enthält die Info welche du suchst nicht. Du musst das struct cf auswerten.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.09.2004, 20:29 Uhr
~aburg
Gast



Zitat von mike:

Du musst das struct cf auswerten.



Das habe ich auch schon versucht:



C++:
    CRichEditCtrl* edit = (CRichEditCtrl*) GetDlgItem(IDC_EMAIL_TEXT);
    CHARFORMAT cf;
    cf.cbSize = sizeof(CHARFORMAT);

    for(int i = 0; i < edit->GetTextLength(); i++)
    {
        edit->SetSel(i, edit->GetTextLength());
        edit->SetFocus();
edit->GetSelectionCharFormat(cf);
        
if(cf.dwEffects == CFM_ITALIC) {MessageBox("italic"); return;}
if(cf.dwMask == CFM_ITALIC) {MessageBox("italic"); return;}        

    }


Klappt auch nicht. Werte ich das falsche aus?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.09.2004, 09:24 Uhr
Airdamn



cf.dwMask ist nicht gleich CFM_ITALIC, wenn die Schrift kursiv ist.
In dieser Maske sind einzelne Bits gesetzt, wenn der entsprechende Stil vorhanden ist.
Also nicht

C++:
if(cf.dwMask == CFM_ITALIC)
{
...
}


sondern

C++:
if(cf.dwMask & CFM_ITALIC)
{
...
}


Bitweise verknüpfen!

Dieser Post wurde am 29.09.2004 um 09:25 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.09.2004, 11:16 Uhr
~aburg
Gast


Danke für den Hinweis. Allerdings findet er nun jedes mal kursiv, auch wenn es nicht gesetzt ist. Langsam verzweifel ich....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.09.2004, 13:18 Uhr
Airdamn



sry, hab nochmal bei CHARFORMAT in der MSDN geguckt, so muss es lauten

C++:
// kursiv
if( cf.dwEffects & CFE_ITALIC )
...



In der Maske muss CFM_ITALIC gesetzt sein, damit die Schrift kurisv sein darf, in Effects musst Du dann prüfen ob die Schrift wirklich kurisv ist (CFE_ITALIC).

Dieser Post wurde am 29.09.2004 um 13:19 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: