006
27.09.2004, 19:56 Uhr
xXx
Devil
|
ich habs jetzt so gemacht:
Code: |
void CVokabeltraineraDlg::OnDruck() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen CListCtrl* pLC=(CListCtrl*) GetDlgItem(IDC_VOK); // Ein CPrintDialog-Objekt konstruieren CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
if (dlgPrint.DoModal()==IDOK) { // Den Drucker-DC vom Dialogfeld mit einem // CDC-Objekt verbinden CDC dcPrint; dcPrint.Attach(dlgPrint.GetPrinterDC()); // Eine DOCINFO-Struktur erzeugen und füllen DOCINFO myPrintJob; myPrintJob.cbSize = sizeof(myPrintJob); myPrintJob.lpszDocName = "Vokabeltrainer 1.0"; myPrintJob.lpszOutput = NULL; myPrintJob.lpszDatatype = NULL; myPrintJob.fwType = NULL; // Ausdruck des Dokuments starten if (dcPrint.StartDoc(&myPrintJob)>=0) { int vokabeln = pLC ->GetItemCount(); int schleife = 0; int durchgang = 0; int zeile = 0; CString Seite; if ( vokabeln > 39) { schleife = 1 + vokabeln/39; } else { schleife = 1; durchgang = vokabeln; } for (int j = 0; j < schleife; j++) { // Eine Seite beginnen dcPrint.StartPage(); // Zeichnen beginnen int ersteSpaltex = 150; int Spaltey = 75; dcPrint.TextOut(ersteSpaltex, Spaltey, "Englisch"); int zweiteSpaltex = 500; dcPrint.TextOut(zweiteSpaltex, Spaltey, "Deutsch"); int dritteSpaltex = 900; dcPrint.TextOut(dritteSpaltex, Spaltey, "Unit"); dcPrint.MoveTo(135, 140); dcPrint.LineTo(2230, 140); if(j < schleife - 1) durchgang = 39; else durchgang = vokabeln%40; for (int i = 0; i < durchgang; i++) { dcPrint.TextOut(ersteSpaltex,Spaltey,pLC->GetItemText(zeile,0)); dcPrint.TextOut(zweiteSpaltex,Spaltey,pLC->GetItemText(zeile,1)); dcPrint.TextOut(dritteSpaltex,Spaltey,pLC->GetItemText(zeile,2)); Spaltey += 75; zeile++; } Seite.Format(" - %d - ",schleife); dcPrint.TextOut(1160,3230,Seite); // Seite auswerfen dcPrint.EndPage(); } // Dokument schließen dcPrint.EndDoc(); } // Druckergerätekontext löschen dcPrint.DeleteDC(); } }
|
aber jetzt hab ich das Problem das die erste Zeile über die Überschriften gedruckt wird |