Fensterinhalt drucken

steffi1985

Grünschnabel
Hallo Ihr!

Hab mal wieder ein gaaaanz wichtiges Problem...bin gerade am überlegen, wie ich den Inhalt eines Fensters (Ansicht von CScrollView abgeleitet) drucken kann (also im Prinzip ein Screenshot des Fensterinhalts)...hab' bisher nur einen Tipp bekommen, man könne irgendwie so einen Screenshot des Inhalts erzeugen und diesen dann drucken...aber ich hab' leider nicht wirklich einen Plan, wie das gehen soll...:-(

...deswegen würde ich mich über weitere Tipps und/oder Quellcode freuen :-)


LG Eure Steffi :-)
 
Hab' jetzt leider nicht die Zeit, das genauer zu erklären, aber Du kannst einen Printer-DeviceContext erzeugen und dadrin Deine Ausgaben machen. Vielleicht hilft Dir das ja schon weiter:
 
@jokey2

Hört sich gut an, allerdings bin ich da als Anfängerin bisschen überfordert...wäre lieb, wenn du bei Gelegenheit Näheres dazu schreiben könntest :-)

LG Steffi.
 
Sorry, aber ich bin zur Zeit ein bisschen kanpp mit Zeit.
Vielleicht kann ja einer der Anderen hier was genaueres dazu schreiben.
 
Hi, ich nehme mal an, daß du den Fensterinhalt ausdrucken willst und nicht den ganzen Screen. Das Drucken geschieht eigentlich genau wie die Bildschirmausgabe über die OnDraw()-Funktion. Haken an der ganzen Sache ist, welchen MapMode man im GDI eingestellt hat. Wenn man im MM_TEXT-Modus arbeitet, wird jeder Bildpunkt als ein Punkt ausgedruckt, sodaß ein winziger Ausdruck entsteht, der unbrauchbar ist. Du müßtest also MapMode MM_HIMETRIC oder vergleichbare verwenden. Dann wir im metrischen Maß ausgegeben. Wenn du dann gewährleistest, daß du den ScrollSize auf eine A4-Seite einstellst, kannst du ganz einfach über die OnDraw-Methode drucken, das klappt automatisch. Ist dein Dokument größer, mußt du die OnPrint-Methode durch den Klassenassistent überschreiben lassen und dann festlegen, wieviel Seiten dein Dokument hat (in OnPreparePrinting) und dann anhand der aktuellen Seitennummer den entsprechenden Dokumentenausschnitt drucken lassen. Schau mal in der MSDN nach, da ist das relativ gut erklärt.

Mfg

langer
 
ach ja, prüfen, ob gerade gedruckt wird oder auf dem Bildschirm gezeichnet wird kannst du ganz einfach über die Funktion pDC->IsPrinting(). Die gibt true zurück, wenn gedruckt wird. Danach kann man eventuell andere Zeichenfunktionen nutzen oder so.

Mfg
 
Zurück