Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Drucken, Ausschnitt aus Seite 1 auf Seite 2 kopieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: