[Visual C++] Standard-Schriftgröße eines dialogbasierten Programms

smallone

Mitglied
Hallo zusammen,

gibt es eine einfache Möglichkeit, die Schriftgröße einer MFC-Anwendung zu erhöhen, ohne gleich den globalen Windows-Standard hochsetzen zu müssen ?

Hintergrund: Mein Programm dient zur Dateneingabe bei einem Versuchsaufbau, die Versuchsperson sitzt nun aber leider ein wenig weiter weg vom Bildschirm und kann kaum noch was lesen ;-)

Vielen Dank für Eure Hilfe !

Gruß
BEN
 
GAnz einfach ist es nicht, aber auch nicht allzu schwierig:

Gib deiner Dialogklasse ein Member vom Typ CFont -- das wird der Zeichensatz, den du verwendest.
Code:
  CFont m_Font;

In z.B. OnInitDialog() createst du den Font mit beliebigen Einstellungen. Dort kannst du ihn auch direkt deinen Controls zuweisen.
Code:
BOOL CMeinDialog::OnInitDialog() 
{
  CDialog::OnInitDialog();

  m_Font.CreateFont( 20, //int nHeight,
                     0, //int nWidth, 
                     0, //int nEscapement, 
                     0, //int nOrientation, 
                     FW_NORMAL, //int nWeight, 
                     0, //BYTE bItalic, 
                     0, //BYTE bUnderline, 
                     0, //BYTE cStrikeOut, 
                     DEFAULT_CHARSET, //BYTE nCharSet, 
                     OUT_DEFAULT_PRECIS, //BYTE nOutPrecision, 
                     CLIP_DEFAULT_PRECIS, //BYTE nClipPrecision, 
                     DEFAULT_QUALITY,    //BYTE nQuality, 
                     DEFAULT_PITCH, //BYTE nPitchAndFamily, 
                     "Arial" //LPCTSTR lpszFacename 
                     );
 
  // Ich habe z.B. ein CEdit-Member, das diesen Font verwenden soll:
  m_ctlEdit.SetFont( &m_Font ); 

  //...

  return TRUE;  // return TRUE unless you set the focus to a control
	        // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}

Das müsste es eigentlich schon gewesen sein.

Ich habe meinen Font nicht freigeben, da ich davon ausging, dass dies im Destruktor von CFont ohnehin gemacht wird. Momentan bin ich mir allerdings nicht sicher, ob das tatsächlich stimmt -- wäre ja nicht die erste Macke von MFC. ;) Weiss da jemand etwas drüber?
 
Hallo, vielen Dank mal wieder an Kachelator !
;-)

// Ich habe z.B. ein CEdit-Member, das diesen Font verwenden soll:
m_ctlEdit.SetFont( &m_Font );

dieser Hinweis hat mir leider nicht weiterhelfen können.

Welche Klasse muß ich in denn für meine gesamte Anwendung (meine Anwendung besteht nur aus einem einzigen Dialogfeld) vor das .Setfont (& m_Font) setzen ?


Ich habe übriegens soeben eine ganz einfache Möglichkeit gefunden, die Schriftart zu ändern:
Im Arbeitsbereich auf Ressourcen, dann auf das Dialogfeld, dessen Schriftart verändert werden soll und mit rechtem Mausclick auf den Hintergrund des Dialogfeldes. Unter Eigenschaften -> Allgemein kann man nun die "globale" Schriftart für genau jenes Dialogfeld ändern.

Fertig !

Danke trotzdem für die Hilfe !
Gruß
BEN
 
Ja, super!

Falls es dich interessiert:
Welche Klasse muß ich in denn für meine gesamte Anwendung (meine Anwendung besteht nur aus einem einzigen Dialogfeld) vor das .Setfont (& m_Font) setzen ?
Im Ressourceneditor setzt du ja einzelne Controls in deinen Dialog. Mit dem Classwizard (Ctrl-W) kannst du jedem Control eine Membervariable zuordnen, zum Beispiel ein CEdit namens m_ctlMeinEdit (oder so) für ein Edit-Control. Über diese Member läuft bei MFC praktischerweise die meiste Kommunikation mit den Controls, und das war es auch, was ich meinte. Solltest du dir mal anschauen.
 
Hallo !

Natürlich hat mich die Antwort auf meine Frage noch interessiert - ok, ich brauche immer ein bißchen länger, um zu verstehen ;-)
Aber jetzt habe ich verstanden, wie es gemeint war !

Vielen Dank für die Antwort !

Gruß
BEN
 

Neue Beiträge

Zurück