www.mikrocontroller.net

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


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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) ?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Benedikt (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Benedikt (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.