Probleme beim drucken oder eigentlich bein BitBlt



  • Hallo,
    Ich muss eine Rechnung drucken wo halt ganz oben ein paar relevante Daten stehen. Das ganze ist auch kein Problem und funktioniert auch reibungslos.

    Jetzt soll aber, wenn auf der Rechnung nicht alles auf einer Seite Platz hat, die speziellen Daten auch auf der Seite 2 stehen. Die Idee von der ersten Seite 10 cm in einen CDC zu kopieren und dann auf die neue Seite mit BitBlt zu kopieren erschien mir am elegantesten. Geht aber nicht. Ich mache folgendes:

    CDC dc;
    	CPoint p;
    
    	dc.CreateCompatibleDC(dcPrint);
    
    	x = MulDiv(atoi(parameterList->GetAt(0)), GetDeviceCaps(dcPrint->GetSafeHdc(), LOGPIXELSY), 72);
    	x1 = MulDiv(atoi(parameterList->GetAt(1)), GetDeviceCaps(dcPrint->GetSafeHdc(), LOGPIXELSY), 72);
    	space = MulDiv(atoi(parameterList->GetAt(3)), GetDeviceCaps(dcPrint->GetSafeHdc(), LOGPIXELSY), 72);
    	rect.left = x;
    	y =MulDiv(atoi(parameterList->GetAt(2)), GetDeviceCaps(dcPrint->GetSafeHdc(), LOGPIXELSY), 72);
    
    	p.x = x;
    	p.y = y;
    .....
    		dcPrint->DrawText(t1,rect,DT_LEFT | DT_SINGLELINE);
    		dcPrint->DrawText(t2,rect,DT_RIGHT | DT_SINGLELINE);
                // hier ist neue Seite
    		if (anz > atoi(parameterList->GetAt(4)))
    		{
    			rect.left = x;
    			rect.right = x1;
    			rect.top = y;
    			rect.bottom = y + space;
    			anz = 1;
                            //kopieren
    			BitBlt(0,0,p.x,p.y,dcPrint,0,0,SRCCOPY);
                            //Seite Auswerfen
    			dcPrint->EndPage(); 
    			dcPrint->StartPage(); 
                            //auf neue Seite kopieren
    			dcPrint->BitBlt(0,0,p.x,p.y,&dc,0,0,SRCCOPY);
    

    beim durchdebuggen bekomme ich bei BitBlt auch immer 1 zurück also gültig. Auf dem Papier erscheint aber weisser Adler auf weissem Hintergrund. Habe ich BitBlt irgendwie falsch verstanden? Kann mir wer sagen, was ich falsch mache?



  • dc.BitBlt(0,0,p.x,p.y,dcPrint,0,0,SRCCOPY);
    und nicht
    BitBlt(0,0,p.x,p.y,dcPrint,0,0,SRCCOPY);



  • War die Frage zu unverständlich? Das Problem zu ungenau beschrieben? das daß keiner wüsste kann ich mir schwer vorstellen.



  • Hi, versuch mal StrechBlt, mit BitBlt hatte ich auch totale Probleme. 🙂


Anmelden zum Antworten