H
Hallo!
Ich versuche gerade eine Druckfunktion in ein Programm einzubauen die einfach einen Screenshot an den Drucker ausgiebt. Leider funktioniert das nicht ganz so einfach wie ich mir das vorgestellt habe, bzw. nicht bei allen Rechnern und Druckern.
Deshalb wollte ich jetzt so eine Art CDC-buffer einführen auf den ich das ganze vorher kopiere damit ich dann beim eigentlichen Drucken keine Probeleme mit überlagerten Fenstern und sowas habe.
CDC *buffer=new CDC();
buffer->CreateCompatibleDC(GetDC());
buffer->StretchBlt(0,0,Width,Heigh,GetDC(),0,0,Width,Heigh,SRCCOPY);
CDC printer;
DOCINFO job;
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS|PD_HIDEPRINTTOFILE|PD_NOSELECTION,this);
if (dlgPrint.DoModal()==IDOK)
{
printer.Attach(dlgPrint.GetPrinterDC());
job.cbSize=sizeof(job);
job.lpszDocName=("Titel");
job.lpszOutput=NULL;
job.lpszDatatype=NULL;
job.fwType=NULL;
if(printer.StartDoc(&job)>=0)
{
printer.StartPage();
printer.StretchBlt(0,0,1000,1000,buffer,0,0,Width,Heigh,SRCCOPY);
printer.EndPage();
printer.EndDoc();
printer.Detach();
printer.DeleteDC();
}
}
Ich kopier das ganze zuerst auf einen buffer und will es dann auf den Drucker StretchBlt-en aber da kommt nix raus...
Width und Heigh sind globale Variablen die auch stimmen, das hab ich überprüft. Statt dem ersten StretchBlt könnte man auch ein BitBlt machen, aber das ändert auch nix...
Kann mir wer von euch sagen was dabei falsch ist?
MfG
Headshot