Kitty82 Geschrieben 28. Oktober 2004 Teilen Geschrieben 28. Oktober 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 28. Oktober 2004 Teilen Geschrieben 28. Oktober 2004 Ich glaube hier wäre ein wenig Code von der Stelle wo du versuchst die Formartierung zu ändern ganz hilfreich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kitty82 Geschrieben 28. Oktober 2004 Autor Teilen Geschrieben 28. Oktober 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 28. Oktober 2004 Teilen Geschrieben 28. Oktober 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kitty82 Geschrieben 28. Oktober 2004 Autor Teilen Geschrieben 28. Oktober 2004 @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 Danke nochmals + Gruß Kitty Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 28. Oktober 2004 Teilen Geschrieben 28. Oktober 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kitty82 Geschrieben 28. Oktober 2004 Autor Teilen Geschrieben 28. Oktober 2004 danke für die schnelle Antwort! Der link auf die HP ist echt gut - dort gibt es ja noch mehr interessante dinge da die texte nicht editierbar sein sollen, versuch ich deinen tipp. Merci + Grüßle Kitty Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.