000
27.02.2005, 14:39 Uhr
~Schlussheinrich
Gast
|
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:
C++: |
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); C/C++ Code: 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); C/C++ Code: 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? Vielleicht kann mir hier wer helfen. |