Schriftgröße des gesamten Dialogs ändern
-
Hiho,
wenn ich einen Dialog habe, kann ich ja im Ressourceneditor bei den Eigenschaften Schriftart und -größe angeben. Wenn ich das tue, wird der gesamte Dialog mit alle Steuerelementen größer. Wie kann man das programmiertechnisch umsetzen? dialog.SetFont(...); hat bei mir keine Auswirkungen. Da bleibt alles wie es ist.
MfG Pellaeon
edit: huch, ich dachte ich bin im MFC-Board. Sry und bitte verschieben.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die Schrift in einer Dialog-Ressource ist einmal wählbar mit FONT .... und gilt dann für den gesamten Dialog, also auch für Steuerelemente. Eine unterschiedliche Wahl ist nicht möglich.
-
berniebutt schrieb:
Die Schrift in einer Dialog-Ressource ist einmal wählbar mit FONT .... und gilt dann für den gesamten Dialog, also auch für Steuerelemente. Eine unterschiedliche Wahl ist nicht möglich.
Ich will ja auch nicht für die Steuerelemente unterschiedliche Fonts (das wäre jak ein Problem, da weis ich wie es geht). Ich will zur Laufzeit die Schriftgröße für den ganzen Dialog samt alelr Steuerelemente ändern. In den Eigenschaften im Ressourceneditor gehts ja auch! Da stell ich von 10 auf 14 und dann ist der gesamte DIalog größer mit allen Elementen. Ja und sowas brauch ich halt zur Laufzeit.
-
Man hat ja als Resource irgendetwas in der Art in der resource.rc stehen:
IDD_TEST_DIALOG DIALOGEX 0, 0, 199, 109
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION
EXSTYLE WS_EX_APPWINDOW
CAPTION "Test"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Beenden",IDOK,112,87,84,16,BS_FLAT
PUSHBUTTON "starten",IDC_BUTTON_TEST,3,87,84,16,BS_FLAT
LISTBOX IDC_LIST_SELECTION,4,33,192,49,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LTEXT "Test Test",IDC_STATIC,3,2,193,26
ENDUnd kann man da was zur Laufzeit dran ändern? Weil da steht ja die Schriftgröße drinnen. Hat da wer Ahnung von?
-
musst du dir selbst programmieren z.B. mit EnumChildWindows
-
Pellaeon schrieb:
IDD_TEST_DIALOG DIALOGEX 0, 0, 199, 109
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION
EXSTYLE WS_EX_APPWINDOW
CAPTION "Test"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Beenden",IDOK,112,87,84,16,BS_FLAT
PUSHBUTTON "starten",IDC_BUTTON_TEST,3,87,84,16,BS_FLAT
LISTBOX IDC_LIST_SELECTION,4,33,192,49,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LTEXT "Test Test",IDC_STATIC,3,2,193,26
ENDDiese Parameter in resource.rc verwendet der Dialog-Manager beim (internen) Aufbau der einzelnen Elemente (also der einzelnen Fenster).
Bei OnInit() bzw. WM_INITDIALOG hat er diese Parameterwerte schon berücksichtigt.
D.h. jetzt kannst Du für jedes Dialog-Element separat einen gewünschten Font zuordnen, in etwa so (für das obige Beispiel IDC_STATIC):SendDlgItemMessage( hwnd_dialog, IDC_STATIC, WM_SETFONT, (WPARAM)hfont_meinFont, (LPARAM)0 );
(Bin eher in Win32-API beheimatet, evtl. muß man die Funktion MFC-konform umschreiben? Der Prinzip ist der selbe)
Du kannst auch alternativ die eine Zeile in resource.rc abändern:
FONT 8, "MS Shell Dlg", 0, 0, 0x1
in z.B.:
FONT 8, "Courier New", 0, 0, 0x1
Dann bekommen alle Elemente des Dialogs diesen neuen Font zugewiesen.
Natürlich kannst Du da nicht zur Laufzeit einfach so wieder einen anderen Font wählen, das geht nur mit der ersten Methode!
Aber Achtung! Sobald Du mit dem Resourcen-Editor von Visual Studio am Dialog was änderst, dann schreibt Visual Studio möglicherweise wieder den (alten) voreingestellten Font-Namen in resource.rc rein!Martin