Ich stieß auf ein peinliches Verhalten von CEdit bei der Einstellung der Schriftart: für eine bestimmte Schriftgröße, Buchstaben wie "g" oder "j" fehlt der untere Teil, unabhängig von CEdit die richtige Höhe. Hier sind zwei Beispiele:MFC Edit Steuerelement seltsames Verhalten
CFont *ctrlFont = new CFont();
ctrlFont ->CreatePointFont(80, "Arial Black");
CEdit m_editName;
m_editName.SetFont(ctrlFont);
mit diesem Ergebnis:
aber für
ctrlFont ->CreatePointFont(100, "Arial Black");
alles fein
Wie Sie beobachten können, die rect Höhe des CEdit ist größer als die Höhe des Textes in beiden Fällen. Die Elternkontrolle ist ein CDialog; Die Schriftart wird auf ::OnInitDialog
gesetzt und CEdit Größe wird mit SetWindowPos
Methode auf ::OnShowWindow
festgelegt. Was könnte das verursachen und wie soll ich damit umgehen?
Bearbeiten: Ich habe @rrirower Vorschlag versucht, und jetzt bin ich verwirrt; die CEdit der Zugabe CDC
zu CFont der Initialisierung der Text der Maske viel geändert (Sie es von der beggining nicht sehen können, aber ich habe andere bearbeiten die mit der alten Schrift auf der gleichen Seite und es gibt einen großen Unterschied):
ctrlFont1->CreatePointFont(80, "Arial Black", m_editName.GetDC());
Haben Sie versucht, einen DC auf dem Create Anruf spezifiziert? Nicht sicher, es wird einen Unterschied machen, aber, den Versuch wert. – rrirower
@rrirower, Ich habe Ihren Vorschlag versucht, aber die Ergebnisse sind irgendwie seltsam: der Text sieht nicht wie beim letzten Mal aus. Ich werde meine Frage mit diesem Ergebnis aktualisieren. – MRM
@rrirower, die die Bearbeitungssteuerung DC impliziert, hat andere Eigenschaften als die Desktop-DC. Wie kann das sein? –