OnFilePrint()
-
Eben! Die Funktion ist virtuell und wird vom Framework aufgerufen sofern eben diese Klasse OnPreparePrinting überschreibt.
-
Nee funktioniert einfach nicht, entweder steh ich total auf dem Schlauch oder das Drucken funktioniert mit einer FormView so nicht.
Hier mal mein Code:void CMyFormView::Print() { CMyFormView::OnFilePrint(); }BOOL CMyFormView::OnPreparePrinting(CPrintInfo* pInfo) { return CMyFormView::DoPreparePrinting(pInfo); }virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);OnFilePrint() sollte die überschriebene Methode CMyFormView::OnPreparePrinting(CPrintInfo* pInfo) aufrufen, aber sie ruft die Methode CView::OnPreparePrinting(CPrintInfo* pInfo) auf.
-
Verstehe ich nicht. Ein mit dem Wizard erzeugtes Sample arbeitet korrekt...
Kann ich in keiner Weise nachvollziehen.
-
Hmm??
Wie hast du das Sample erzeugt?
Wenn ich die Ansichtsklasse von CView ableite funktionierts, aber mit meiner CFormView leider nicht.
-
Ich habe eine normale SDI Anwednung erzeugt mit einem normalen CView...
Wenn man ein CFormView hat wird hier das Drucken verhindert.Aber die grundsätzliche Technik mit den entsprechedenden On...Print Funktionen lässt sich damit prima testen.
-
Martin Richter schrieb:
Wenn man ein CFormView hat wird hier das Drucken verhindert.
Also kann ich mit dieser Methode mein CFormView nicht drucken?!
-
Doch schon. Du musst nur selber OnPrint überschreiben und den ganzen Käse selber machen. Aber die grundsätzliche Funktion unterscheidet sich nicht!
In Codeproject suche mal nach "CFormView Print", das findest Du eine halbgare Lösung die ds Formular in eine Bitmap kopiert und dann druckt...
-
Das habe ich mir auch schonmal angeschaut. Ich möchte allerdings nicht die komplette Oberfläche mit allen Controls drucken, sondern nur die Einträge in den Editfeldern ausdrucken.
-
Dann mach das doch...

Ich habe einfach in meiner CView Klasse diese beiden Funktionen über den Class View hinzugefügt:
void CTestSDIFormPrintView::OnFilePrint() { __super::OnFilePrint(); } BOOL CTestSDIFormPrintView::OnPreparePrinting(CPrintInfo* pInfo) { return DoPreparePrinting(pInfo); }Jetzt nur noch ein bischen DrawText in OnPrint und das wars...
-
Also mach ich doch ne eigene Ansichtsklasse zum drucken-> CPrintView, abgeleitet von CView-> dann kann ich OnPreparePrinting überschreiben.
Doch dann hab ich wieder das andere Problem das OnFilePrint() nicht an mein Document rankommt.
-
Falsch... Wieso CPrintView?
Du sollst das ganze drucken in Deine eigene CFormView Klasse packen und icht in eine Extraklasse.
-
Wer ruft denn die Methode OnPrint() auf?
-
OnFilePrint
-
Habe mir jetzt mal das Beispiel projekt von CodeProject.com runtergeladen. Genau so hatte ich es auch vor, aber bei denen funktionierts.
In deren Message Map der Klasse CFormViewPrint2View stehtON_COMMAND(ID_FILE_PRINT, OnFilePrint)In meiner Anwendung musste ich das in die Applikationsklasse schreiben und nicht in die CFormView. Wenn ich es in der CFormView implementiere bleibt der Menü-Eintrag ausgegraut.
Haben die irgendwie die Druckunterstützung aktiviert?