Titelzeile (SDI/MDI): Font, Farbe, Hintergrund ändern + mehrzeilig anzeigen
-
Und schreib mal, wenn es funktioniert hat. Hat meine Neugierde geweckt.
Viel Erfolg.Paul.
-
Bist du eigentlich schon weiter gekommen?
-
Nein, ich war dann davon abgekommen, weil ich erstmal die leichteren Änderungen machen wollte.
Ich melde mich dann aber hier.
-
So, ich habe mir gerade mal das Demoprojekt geladen.
Leider haben die Änderungen nur in den Childfenstern Effekt.Ich brauchs ja im Mainframe.
Hoffentlich kann ich das anpassen.
-
Ja, ist mir da auch aufgefallen. Aber ich bin mir sicher, dass du das schaffst (und hier dann die Lösung veröffentlichst).
Viel Erfolg!
Paul.
-
Jupp, man kann es anpassen.
im Header vom Mainframe:
CMultiLineCaptionEx m_Caption;
im cpp:
m_Caption.Install(this); LOGFONT lf; m_Caption.GetTextAttributes()->GetActiveFont()->GetLogFont(&lf); lf.lfHeight = -80; m_Caption.GetTextAttributes()->SetActiveFont(lf);
Und schon erschlägt einen die Überschrift.
...aber rein theoretisch kann man so herausfinden, was eingestellt ist und dann vielleicht doch nur die angezeigte Textmenge anpassen.
...ach egal, ich lass es bei der riesigen Kurzform.
-
Sehr schön. Das ging ja schnell.
Vielleicht sollte ich mir die Klasse auch nochmal anschauen...Weiter so!
-
So, ich habs jetzt in mein Projekt übernommen, hat ganz gut funktioniert.
Wenn man keinen Maximieren-Knopf haben will, gibts allerdings einen Fehler, dazu steht eine Lösung in der Diskussion zum Programm.Damit funktioniert es jetzt, ich kann wieder minimieren ohne ins leere klicken zu müssen.
Leider macht das einfach eine blaue Titelzeile, keine mit Farbverlauf - bzw ich hab jetzt ehrlich keinen Bock mehr, mir rauszusuchen, wie ich die Titelzeilenfarben rausfinde und dann eine GradientCaption zu nutzen.
Ist okay so.
-
Solange du zufrieden bist.
Vielleicht kann das hier auch in die FAQ?
-
Anmerkung: Sobald das Fenster ein Menü hat, sollte man nur CSingleLineCaption verwenden, da das Menü sonst nicht mehr angezeigt wird.
Da dann aber größere Schrift unten abgeschnitten wird, muss man nachbessern://////// // Calculate the caption text clipping rect // CRect CCaption::GetTextRect() { CRect textRect = GetCaptionRect(); textRect.left += GetIconWidth(); textRect.right -= GetButtonsWidth() + 4; // textRect.top -= 2; textRect.top -= 6; return textRect; }
Außerdem muss man das Icon von Hand nochmal mit SetIcon festlegen.