Forum: PC-Programmierung Schriftgröße, Farbe usw. in MFC Anwendung ändern


von Benedikt (Gast)


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) ?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Benedikt (Gast)


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);

von Benedikt (Gast)


Lesenswert?

Programmieren hier alle nur in VB oder ist sowas in MFC echt so schwer,
dass sich hier niemand auskennt ?

von Rufus Τ. F. (rufus) Benutzerseite


Angehängte Dateien:

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

von Benedikt (Gast)


Lesenswert?

Danke ! Jetzt funktioniert es wunderbar. Es sind immer nur kleine
Details die aber nirgends beschrieben sind.

von Thomas (Gast)


Lesenswert?

Nein, es programmieren nicht alle in VB, aber MFC iss doch sowas von out
;-)

von Benedikt (Gast)


Lesenswert?

Gibt es einfache Alternativen, die ohne Zusatzsoftware (z.B. .NET
Framework usw.) auf Win9x und aufwärts laufen ?

von Rufus Τ. F. (rufus) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.