Schriftgröße, Farbe usw. in MFC Anwendung ändern

Gast #385992
Lesenswert?

Ich möchte in einer MFC Anwendung sehr große Zahlen darstellen
(Schriftgröße 50-100), damit diese auch aus einer gewissen Entfernung
lesbar sind.
Daher habe ich versucht mit CreateFont den Anzeigefeldern eine große
Schriftart zuzuweisen, aber irgendwie ändern die angegebene Breite und
Höhe nur die Größe der Darstellungsfläche (d.h. mache ich die Werte zu
klein, wird der Text unten abgeschnitten).

Kann man irgendwie direkt die Schriftgröße einstellen, oder geht das
nur über den Umweg mit einer Grafik (z.B. über CClientDC::TextOut) ?
Persönliche Seite #385993
Lesenswert?

a) was sind in Deinem spezifischen Fall "Anzeigefelder"?

b) sollten das Controls sein, sendest Du denen auch 'ne
WM_SETFONT-Nachricht?

c) Ownerdraw-Controls sollten eigentlich nicht nötig sein.

d) Mit welcher Schriftart versuchst Du das? Nicht jede in
Windowsprogrammen verwendete ist überhaupt skalierbar, es gibt immer
noch ein paar Pixelfonts.
Gast #385994
Lesenswert?

Ich versuche den Text in einer EditBox groß zu machen.
Hier mein bisheriger Code:


  CFont l_font;

  l_font.CreateFont(50,                            // Height
          0,                             // Width
          0,                             // Escapement
          0,                             // Orientation
          FW_BOLD,                       // Weight
          FALSE,                         // Italic
          TRUE,                          // Underline
          0,                             // StrikeOut
          ANSI_CHARSET,                  // CharSet
          OUT_DEFAULT_PRECIS,            // OutPrecision
          CLIP_DEFAULT_PRECIS,           // ClipPrecision
          DEFAULT_QUALITY,               // Quality
          DEFAULT_PITCH | FF_SWISS,      // PitchAndFamily
          "Arial");                      // Facename

  m_freqc.SetFont(&l_font);

  SendMessage(WM_SETFONT, (WPARAM)HFONT(l_font), true);
Persönliche Seite #385996
Lesenswert?

So, habe mir das mal eben angesehen.

Das Problem liegt in der Variablen l_font, die muss für die ganze
Laufzeit des Dialoges existieren, also nicht nur für den Aufruf von
SetFont.

Mach daraus eine Membervariable Deiner Dialogklasse, und schon sollte
es funktionieren.

Was nicht geschieht, ist eine automatische Größenanpassung von
Editcontrols, die musst Du im Resourceneditor von Hand ausreichend groß
machen.

Anbei ein Müsterchen, erstellt mit VC6.

Viel Erfolg
Angehängte Dateien:
Persönliche Seite #386000
Lesenswert?

Es gibt in der Tat Alternativen, die mit statisch linkbaren Libraries
auch aus VC6 heraus verwendet werden können. Das .Net-Geblubber fällt
nicht darunter.

Beispiele:

wxWidgets
fltk
Qt

Zu wxWidgets ist der GUI-Builder DialogBlocks sehr zu empfehlen, der
aber kostet (etwas) Geld (www.anthemion.co.uk).

Der Vorzug all dieser GUI-Toolkits ist deren Plattformunabhängigkeit -
damit geschriebene Programme sind prinzipiell auch auf andere
Betriebssysteme wie Linux oder MacOS portierbar, was bei der MFC nicht
möglich ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren