Zum Inhalt springen

MFC - formatierte Ausgabe


Kitty82

Empfohlene Beiträge

Hallole,

zur Info: ich hab zwei Dialoge. Das eine ruft das andere durch den Klick auf n Button auf.

Im ersten Dialog hab ich ein Statictextfeld, worin ich austeste, was und wie ich alles formatieren kann. Dort klappt alles was ich bis jetzt ausprobiert habe - keine Probleme.

In meinem zweiten Dialog habe ich ein Richeditfeld und ein Statictextfeld. Im Richeditfeld bekomme ich ebenfalls alles formatiert hin, nur nimmt mein Statictextfeld meine Formatierung nur teilweise(?) an. Es wird zum Bsp. nur in der Schriftart breiter, ändert aber nicht die Schriftart selber oder die Größe, wenn ich es angebe. Kann es sein, dass sich das hier mit dem Richeditfeld "beisst"? Gibt es eine Möglichkeit beide in einem Dialog unterzubringen?

An meiner Funktion mit der ich den Text formatiere, liegt es nicht. Benutze hier CreateFont. Klappt ja wie gesagt im ersten Dialog ohne Probleme.

Ach so und noch was, kann mir einer 'n Tipp geben, mit welcher Funktion ich in meinem Statictextfeld den Text farblich verändern kann?

Ich danke schon mal ganz herzlichen im Voraus :e@sy

Grüßle Kitty

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, hier der Code.

Aber der Code funktioniert so, wie ich ihn schreibe, da ich ihn ja schon in den ersten Dialog eingefügt habe und es dort so ausgegeben wurde, wie ich es erwartet habe.

Hoffe, dir hilft trotzdem mein Code weiter und kannst mir dadurch sagen, warum es nur im zweiten Dialog nicht so angezeigt wird, wie es sein sollte.

void Result::ShowText()

{

   CFont font; 

   VERIFY(font.CreateFont( 

   35,                        // nHeight 

   0,                         // nWidth 

   0,                         // nEscapement 

   0,                         // nOrientation 

   FW_HEAVY,                  // nWeight 

   FALSE,                     // bItalic 

   TRUE,                      // bUnderline 

   0,                         // cStrikeOut 

   ANSI_CHARSET,              // nCharSet 

   OUT_DEFAULT_PRECIS,        // nOutPrecision 

   CLIP_DEFAULT_PRECIS,       // nClipPrecision 

   DEFAULT_QUALITY,           // nQuality 

   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily 

   "Batang"));                 // lpszFacename


   CString text = "ERGEBNISSE";


   SetDlgItemText(IDC_Titel, text);              //IDC_Titel -> StaticTextFeld

   GetDlgItem(IDC_Titel)->SetFont(&font);


   UpdateData(TRUE);


}
hier die Funktion womit ich mein RichEditFeld formatiere:
void Result::GetFormatText()

{

	int pos_ch=0, pos_ch2=0;


	//Konvertierung von CString in Editstream

	EDITSTREAM file;

	CString worktext;

	CString text= FillText()+m_fileData;

	worktext = text;


	file.dwCookie = (DWORD)&text; 

	file.pfnCallback = StreamInCallback; 

	file.dwError = 0;


	m_ctrlAusgabeT.StreamIn(SF_TEXT, file);


	CHARFORMAT2 Cfm;


	pos_ch = worktext.ReverseFind('=');

	pos_ch2 = worktext.Find('|', pos_ch);


             //m_ctrlAusgabeT = CtrlVariable von meinem RichEditFeld

	m_ctrlAusgabeT.SetSel(pos_ch+1, pos_ch2 -pos_ch);

	ZeroMemory(&Cfm, sizeof(Cfm));

	Cfm.cbSize = sizeof(CHARFORMAT2);

	Cfm.dwMask = CFM_COLOR;

	Cfm.crTextColor = RGB(50,0,255);


	m_ctrlAusgabeT.SetSelectionCharFormat(Cfm);

Beide Funktionen werden in Result::OnInitDialog() aufgerufen. Zuerst ShowText(), dann GetFormatText().

Kann auch das AfxInitRichEdit() mit meinem Problem zu tun haben? Weglassen kann ich es aber nicht. Da sonst alles mit RichEdit nicht funktioniert.

Danke + Gruß

Kitty

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst sicherstellen, dass die CFont-Instanz, deren Adresse du mit SetFont übergibst, mindestens solange existiert wie das Fenster, dem du sie zugewiesen hast. In deinem Fall ist font aber eine lokale Variable, die zerstört wird, wenn die Methode ShowText beendet ist.

Dass das in dem anderen Dialog funktioniert, ist Zufall.

Wenn du aus der lokalen Variablen einen Member der Dialogklasse machst, dann sollte es funktionieren.

Siehe dazu auch:

http://support.microsoft.com/support/kb/articles/q85/5/18.asp

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Klotzkopp :eek: danke, es hat geklappt!! :e@sy

kannst du mir auch einen Tipp geben, welche Funktion ich benutzen kann, um mein Statictextfeld den Text z.Bsp. rot darzustellen?

auch (jemand) 'ne Idee bzw. 'nen Tipp wie ich eine Tabelle darstellen kann? :confused:

Hab Ergebnisse, die ich gern in einer Tabelle in meinem Textfeld ausgeben mag. Hab zwar mit | und - die ganze Zeit gearbeitet, aber irgendwie professionell sieht das nicht wirklich aus :rolleyes:

Danke nochmals + Gruß

Kitty

Link zu diesem Kommentar
Auf anderen Seiten teilen

kannst du mir auch einen Tipp geben, welche Funktion ich benutzen kann, um mein Statictextfeld den Text z.Bsp. rot darzustellen?

Das geht nicht so einfach. Bei CodeProject gibt es da was:

http://www.codeproject.com/staticctrl/coloredit_colorstatic.asp

auch (jemand) 'ne Idee bzw. 'nen Tipp wie ich eine Tabelle darstellen kann? :confused:

Hab Ergebnisse, die ich gern in einer Tabelle in meinem Textfeld ausgeben mag.

Dafür sind Textfelder nicht geeignet. Falls die Texte nicht (oder nur in der ersten Spalte) vom Benutzer editierbar sein sollen, könntest du ein Listen-Steuerelement (CListCtrl) benutzen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...