Schriftart eines Eingabefeldes (MFC) ändern

mstangl

Grünschnabel
Schriftart eines Eingabefeldes (MFC - Visual C++ 6.0) ändern

Ich stehe vor dem Problem, dass ich bei einem MFC-Programm (Entwicklungsumgebung: Visual C++ 6.0) nicht weiß wie ich die Schriftart eines einzelnen Eingabefeldes ändern kann.

Dies wäre jedoch dringend notwendig, denn ich möchte das Eingabefeld zur Anzeige vieler Daten verwenden. Wenn ich nun als Schriftart z.B. "MS Sans Serif" (Standard) verwende, so kann ich die Ausgabe nicht richtig formatieren (darstellen), da sich Probleme mit Leerzeichen usw. ergeben (ein Leerzeichen braucht horizontal weniger Pixel als ein Buchstabe...). Nun möchte ich nur genau dieses eine Textfeld zur Anzeige der Daten mit der Schrifart "Courier" verwenden, da bei dieser Schriftart meines Wissens alle Zeichen die gleiche Größe haben und somit wäre dann das Fenster leichter zu formatieren.
Ich weiß zwar, dass ich durch Rechtsklick auf den Hauptdialog unter "Eigenschaften" die Schriftart des Dialoges ändern kann, jedoch wirken sich diese Änderungen auf das gesamte Projekt aus - und überall die Courier-Schrifart zu verwenden möchte ich auch nicht.

Bitte um Hilfe. Danke im Voraus!
Matthias
 
Zuletzt bearbeitet:
Re: Schriftart eines Eingabefeldes (MFC - Visual C++ 6.0) ändern

Du kannst über SetFont jedem Control einen eigenen Font zuweisen. Einfach deinen Courier irgendwo als CFont erzeugen (evtl. ebenfalls als Member) und dann bei OnCreate bzw. OnInitDialog einmal m_editEingabe.SetFont aufrufen.
 
Sorry, aber ich krieg's mit dieser Erklärung trotzdem nicht hin. Bin nicht sehr erfahren im Programmieren! Und die MSDN hilft mir auch nicht weiter, da in diesem Fall kein Beispiel angegeben ist...

Vielleicht wär eine noch genauere Erklärung möglich?
In meinem Programm befindet sich ein Steuerelement - Eingabefeld (IDC_ANZEIGE), welchem ich eine Membervariable m_strAnzeige zugewiesen habe. Wie kann ich diesen String mit Schriftart Curier anzeigen?

mfg
 
Du musst auch eine CEdit Membervariable anlegen (an IDC_ANZEIGE anhängen), über den Assistenten.

Diese CEdit hat dann eine Memberfunktion SetFont, die ein CFont-Objekt erwartet. Dieses kannst du vor dem Aufruf erstellen. Das CFont-Objekt hat eine Funktion CreateFont mit wahnsinnig vielen Parametern, für die meisten gibt es jedoch Default-Werte (0). Die würde ich unbedingt in der MSDN nachsehen. Als lpszFaceName kannst du einfach "Courier" angeben. Dann sollte Windows das hinkriegen.
 
Hallöchen,
umso mehr ich mit dieser MFC Bibliothek arbeite umso weniger gefällt mir diese...
Das die einem echt das Leben schwer machen.
Erstmal kann man "Static Text" keine Variable Zuweisen, also hab ich "Edit Control" genommen...
Aber wie mein Vorgänger will ich die dem einen Edit Feld ne andere Schriftart, aber vorallem größe Zuweisen...

@endurion
Ich kann zwar die SetFont() Fiunktion aufrufen, aber nur für den gesamten Dialog...
Ich will aber den einzelnen Feldern verschiedene Schriftarten und Größen zuweisen...
Also nicht:

m_FragenDlg.SetFont() <- Nimmt als Parameter nur die CFont Object und nen bool wert (wahrscheinlich obs sofort akt. werden soll.)

Aber ich will sowas:

(category ist hier ein Edit Control Feld....)

m_FragenDlg.category.SetFont()


Geht aber nicht :(


Es ist zum kotzen die Visual net hilfe ist auch total trotz filter für c++ bekommt man jeden angezeigt nur das was man wil nicht...

Bin für jede Hilfe dankbar^^

Grüsse
RuFF
 
Man kann acuh unter MFC nem Static eine Variable zuweisen!
Du musst lediglich die ID von IDC_STATIC auf irgendetwas anderes ändern
und schon kannst du sie mit einem CString belegen.

Wenn man das mithilfe von
Code:
GetDlgItem(IDC_MYDLG)->SetFont(Font);

macht sollte man aufpassen, das man auch die richtige IDC hat da sonst das
Programm abstürtzt könnte (und die höchstwahrscheinlich auch wird).
Daher ist diese code zu empfelen:

Code:
CWnd *pWnd = GetDlgItem(IDC_NAME);
if (pWnd) pWnd->SetFont(CFont *pFont, BOOL bRedraw = TRUE);

Das prüft vor dem Zugriff, ob der Zeiger ungleich Null ist.

M.f.G. Erik
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück