Schriftart im Modalen Dialog ändern?

Apollo75

Grünschnabel
Hallo zusammen!

Ich bin ein ziemlicher Anfänger in der MFC-Programmierung - daher sorry, falls diese Frage zu absurd ist. Aber ich komme einfach nicht weiter!

Wie ich die Schriftart grundsätzlich ändern kann, weiß ich ja - nur schaffe ich es einfach nicht, das ganze beim Aufruf eines modalen Dialoges hin zu bekommen.
Meine bisherige Vorgehensweise: In der Klasse des modalen Dialoges erzeuge ich eine CFont-Membervariable, die ich im Konstruktor auch mit CreateFont erstellen kann. Wenn ich nun im modalen Dialog einen Button erzeuge, und in der BNClicked-Funktion die Schrift mit ControlVariable.SetFont(&Schriftart) festlege, funktioniert das ganze auch. Nur wo kann ich dies hinschreiben, dass ich nicht erst auf diesen Button klicken muss? Im Hauptdialog mache ich das in der OnInitDialog. Habe es mit der OnCreate probiert - aber er bringt immer eine Fehlermeldung beim Aufruf der modalen Dialogs (Debug Assertion failed!).
Kann mir jemand weiterhelfen?

Und sorry, falls ich mich unklar ausgedrückt habe - ich bin wirklich purer Anfänger und weiß es nicht besser ;-)
Grüße, Apollo.
 
Das müsste ganz genau so bei WM_INITDIALOG klappen. Einfach vom Assistenten bzw. über die Properties OnInitDialog anlegen lassen.

Bei WM_CREATE ist es möglicherweise noch zu früh, den Font darauf zu setzen.
 
Hallo, Endurion!

Danke für die Antwort - genau das hatte ich auch probiert. Aber kann es sein, dass es für den Dialog keine WM_INITDIALOG gibt? Ich finde dort nur WM_INITMENU und WM_INITMENUPOPUP. Nachdem ich das ganze manuell angelegt habe, funktioniert es auch. "Create" lasse ich aber schon im Konstruktor auf die Schrift los und weise sie dann lediglich im OnInitDlg auf die Steuerungselemente los.
Warum diese WM_INITDIALOG bei mir aber nicht angeboten wurde, wundert mich trotzdem etwas!?
 
Hast du evtl. VS 6? Dort gibt es beim Assistenten eine Filter-Auswahl für die Nachrichten. Manchmal kriegt der das nicht richtig hin, und blendet nicht alle Nachrichten ein.

Ab VS 2002/2003 sollte in den Eigenschaften-Tabs direkt OnInitDialog angeboten werden (meines Wissens nach aber auch WM_INITDIALOG).

Nuja, Hauptsache, es klappt!
 
Sorry, wenn ich da nochmal genauer nachfrage - aber für's nächste mal wäre das sicherlich interessant: Ja, ich habe VS 2003 - und wo finde ich dort OnInitDialog? Wo sind die "Eigenschaften-Tabs"? Bei den Meldungen finde ich eben die WM_INITDialog nicht - wäre aber schön, wenn die irgend wo anders auftauchen würde ;-)
Danke nochmals - mein Haupt-Problem ist ja zum Glück gelöst.
 
Ich hab bei mir die englische Variante installiert, evtl. sind da die Namen etwas anders, aber so:

Du öffnest die Datei, die den Dialog-Code enthält (die .cpp-Datei). Einmal Alt-Enter, dann geht der Properties-Tab auf. Da gibt es oben einen Mini-Toolbar, der dritte Button von links zeigt die Nachrichten an.

Wo WM_INITDIALOG auch tatsächlich nicht auftaucht. Was eine furchtbar dämliche Entscheidung von den Visual-Studio-Erstellern ist. Und da habe ich mich vertan, ich dachte wirklich, dass es mit aufgeführt wird. Kunststück, dass du es nicht gefunden hast; es ist einfach nicht da. Mea Culpa!

Der vierte Button von links zeigt dann überschreibbare Routinen, dort wird auch OnInitDialog aufgeführt. Dort kannst du dann die Funktion anlegen lassen.

Mir ist klar, dass WM_INITDIALOG und OnInitDialog doppelt gemoppelt wäre, aber irgendwie wäre es einfacher.
 
Hah! Super, ich danke Dir - genau dort habe ich es jetzt auch gefunden. Auch wenn es mir bei WM_INITDialog lieber gewesen wäre (denn dort hatte ich es ja gesucht), bin ich froh, dass es überhaupt da ist - da ich noch einige Dialoge zusammen schustern muss, ist dies auf jeden Fall der leichtere Weg.
Nochmals vielen Dank - bis zum nächsten Problem ;-)
 
Zurück