Formatierung auslesen in einem CRichEditCtrl



  • Guten abend,

    ich verzweifel gerade an dem Problem die Formatierung eines CRichEditCtrl auszulesen. Hier mein versuch:

    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();
    
       if(edit->GetSelectionCharFormat(cf) == CFM_ITALIC) {MessageBox("italic");}
    }
    

    Alternativ dieses:

    edit->GetSelectionCharFormat(cf);
    if(cf.dwMask == CFM_ITALIC) {MessageBox("italic");}
    

    Es kommt nichts bei raus und im Forum habe ich auch nichts in die Richtung gefunden. 😞

    Danke im Voraus!



  • Inzwischen habe ich herausgefunden, dass ich Bitweise per & verknüpfen muss:

    void CEMail::OnOK() 
    {
    	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.dwMask & CFM_ITALIC) {MessageBox("italic"); return;}  
    
    	}
    
    CDialog::OnOK();
    }
    

    Allerdings ist die Bedingung nun immer true. Hat jemand eine Idee warum?

    Danke und Grüße!


Anmelden zum Antworten