Fehler bei CreatePointFont



  • hallo zusammen,

    ich drucke hier gerade im Dialog mit CPrintDialog und es klappt soweit sehr gut.
    Nun leider benötige ich verschiedene Schriftgrößen beim Drucken die ich mir mit Cfont.CreatePointFont auch erstelle. Das Drucken wird über ein Button Ergeignis gestartet. So nun habe ich dort

    font.CreatePointFont(180,"Arial",NULL);
    fontn.CreatePointFont(100,"Arial",NULL);

    und wechsle jeweils die Schriftgröße mit

    dcPrint.SelectObject(&font); oder dcPrint.SelectObject(&fontn);

    Das Problem is nun , das es beim ersten mal Drucken klappt , nur wenn ich ein weiteres mal Drucken möchten , kommt es zur Fehlermeldung !!!! Die Fehlermeldung kann ich dann zwar IGNORIEREN und der Druck funktioniert auch dann , aber natürlich is das nicht der Sinn der Sache.

    Hat jemand eine Idee?



  • Mal eine kleine Anmerkung, weil es mir schon oft aufgefallen ist:

    Ist es denn so schwer, den Inhalt der jeweiligen Fehlermeldung gleich mit in das Posting zu packen? Das würde die Wahrscheinlichkeit einer passenden Antwort um einiges erhöhen.



  • Also Fehler kommt nen Windows Fenster mit :

    Debug Assertion Failed

    File : Wingdi.cpp

    Line 1120



  • Mal so ganz einfach aus den paar information zusammengeglaubt.
    Du deine Fonts hast du in der Dialogklasse im Haederfile erzeugt und sicher vergessen die mit CreatePointFont erstellten Fonts auch wieder zu löschen, also DeleteObject() aufzurufen wenn du die nach dem Drucken nicht mehr brauchst. willst du jetzt nochmal Drucken, wirft der dir einen ASSERT weil das objekt ja schon erstellt is.

    Nur mal als Denkanstoß, weil mehr infos haste ja net geliefert.


  • Mod

    Und was steht an dieser Zeile an der der ASSERT kommt? Das ist nun mal bei jeder MFC Version anders.
    Vermutlich existieren die Fonts bereits weil Du nicht aufräumst und der Dialog evtl. immer nicht entsorgt wurde.


Anmelden zum Antworten