Frage

Ich habe ein MFC -Dialogprogramm, in dem ich zur Laufzeit ein paar Cstatic- und Cedit -Steuerelemente erstelle. Irgendwie sind der Text in diesen Steuerelementen nicht klar, dass ClearType aktiviert ist (ClearType in Windows glättet Texte durch Subpixelpositionierung und Färbung).

Wenn man jedoch eine "Steuerung" oder eine "statische Text" zur Entwurfszeit aus der Visual Studio Toolbox manuell hinzufügt, sind diese Steuerelemente durch ClearType aktiviert.

Irgendwie unterscheiden sich die Steuerelemente aus der Toolbox von den zur Laufzeit erstellten Steuerelementen? Weiß jemand, wie man ClearType für Textsteuerungen zur Laufzeit aktiviert? Hier ist ein Codeausschnitt einer Cstatic Control -Erstellung in der OnCreate -Funktion des Dialogs:

CRect crc; crc.SetRect(100, 10, 300, 40);
m_static.Create(_T("Personeelsnummer?"), WS_CHILD | WS_VISIBLE, crc, this, IDC_STATIC1);

Der Text in dieser Cstatic -Steuerung ist nicht durch ClearType aktiviert. Das Einstellen einer anderen Schriftart hat keinen Einfluss.

Ich bin verloren.

War es hilfreich?

Lösung

Ich habe die Antwort auf meine eigene Frage gefunden. Der mangelnde Cleartyp bei den zur Laufzeit erstellten Steuerelementen ist eine Schrift im Zusammenhang mit der Schrift. Wenn man zur Laufzeit eine Steuerung erstellt, wird eine Standardschrift verwendet, die von ClearType nicht betroffen ist und durch eine andere Schriftart ersetzt werden sollte.

In meiner Frage stellte ich fest, dass ich versucht hatte, eine andere Schriftart festzulegen, aber ich hatte eine Schrift in einer lokalen Funktion erstellt. Nach dem Verlassen der Funktion, in der die Schrift eingestellt wurde, wurde die Schrift zerstört, sodass ich keinen Unterschied sah. Ich habe jetzt eine Klassenmitglied -Variable für die Schriftart, die nur zerstört wird, wenn der übergeordnete CWND zerstört wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top