Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Drucken einzelner Seiten aus Dialoganwendung (MFC - C++)





Frage

Hallo, habe folgendes Programm geschrieben, dass Daten aus einer Liste ausdruckt. Allerdings bekomme ich es noch nicht hin, gezielt einzelne Seite auszudrucken. Kann mir jemand einen Tip geben, wie dies funktioniert ? Danke im vorraus. MfG Billiard-Guru Quellcode: void CAllgemein::OnDrucken() { CPrintDialog dlgPrint(FALSE,PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_NOSELECTION | PD_HIDEPRINTTOFILE, this); // show the print dialog. if(dlgPrint.DoModal() == IDOK) { // get handle to printer object. HDC hdcPrinter = dlgPrint.GetPrinterDC(); if (hdcPrinter!=NULL) { CDC dcPrint; dcPrint.Attach(dlgPrint.GetPrinterDC()); DOCINFO ListControlPrint; ListControlPrint.cbSize = sizeof(ListControlPrint); ListControlPrint.lpszDocName = "Übersicht GPS - Daten"; ListControlPrint.lpszOutput = NULL; ListControlPrint.lpszDatatype = NULL; ListControlPrint.fwType = NULL; dcPrint.SetMapMode(MM_LOMETRIC); int nLaenge = dcPrint.GetDeviceCaps(VERTSIZE); int nBreite = dcPrint.GetDeviceCaps(HORZSIZE); int nRechts = nBreite * 10 - 40; int nUnten = -nLaenge * 10 + 40; dcPrint.Rectangle(50, 0, nRechts, nUnten); CFont font, *p_OldFont; font.CreateFont(-100, 0, 0, 0, 600, 0, 0, 0, ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, "Verdana"); p_OldFont= dcPrint.SelectObject(&font); if (dcPrint.StartDoc(&ListControlPrint)>=0) { // Eine Seite beginnen dcPrint.StartPage(); Ausdruck(&dcPrint,p_OldFont, nLaenge, nBreite, nRechts, nUnten); // Ab hier wird der Ausdruck der Artikel vorbereitet // Ermitteln der Zeilen des Listenelement int nAnzahl = m_GPSList.GetItemCount(); int nLaufendeNr = 0; int nSeitenzahl = 1; for(int i=0; i < nAnzahl; i++) { if(nLaufendeNr<12) { nLaufendeNr++; // Einträge aus Listenelement lesen CString sNummer = m_GPSList.GetItemText(i,0); CString sUTC = m_GPSList.GetItemText(i,1); CString sBreite = m_GPSList.GetItemText(i,2); CString sNord = m_GPSList.GetItemText(i,3); CString sLaenge = m_GPSList.GetItemText(i,4); CString sOst = m_GPSList.GetItemText(i,5); CString sQualitaet = m_GPSList.GetItemText(i,6); CString sMSL = m_GPSList.GetItemText(i,7); CString sEinheit = m_GPSList.GetItemText(i,8); CString sDatum = m_GPSList.GetItemText(i,9); CString sKurs = m_GPSList.GetItemText(i,10); CString sAngabe = m_GPSList.GetItemText(i,11); CString sHorSpeed = m_GPSList.GetItemText(i,12); CString sKnoten = m_GPSList.GetItemText(i,13); // und ausgeben dcPrint.TextOut(80, -550-nLaufendeNr*80, sNummer); dcPrint.TextOut(350, -550-nLaufendeNr*80, sUTC); dcPrint.TextOut(650, -550-nLaufendeNr*80, sBreite); dcPrint.TextOut(950, -550-nLaufendeNr*80, sNord); dcPrint.TextOut(1130, -550-nLaufendeNr*80, sLaenge); dcPrint.TextOut(1390, -550-nLaufendeNr*80, sOst); dcPrint.TextOut(1560, -550-nLaufendeNr*80, sQualitaet); dcPrint.TextOut(1680, -550-nLaufendeNr*80, sMSL); dcPrint.TextOut(1850, -550-nLaufendeNr*80, sEinheit); dcPrint.TextOut(1980, -550-nLaufendeNr*80, sDatum); dcPrint.TextOut(2180, -550-nLaufendeNr*80, sKurs); dcPrint.TextOut(2370, -550-nLaufendeNr*80, sAngabe); dcPrint.TextOut(2550, -550-nLaufendeNr*80, sHorSpeed); dcPrint.TextOut(2770, -550-nLaufendeNr*80, sKnoten); // Seitenzahl ausgeben CString str; str.Format("Seite %d ",nSeitenzahl); dcPrint.TextOut(1000, nUnten+250, str); } if(nLaufendeNr==12) { nLaufendeNr = 0; dcPrint.EndPage(); dcPrint.StartPage(); Ausdruck(&dcPrint,p_OldFont, nLaenge, nBreite, nRechts, nUnten); nSeitenzahl++; } } // Seite auswerfen dcPrint.EndPage(); // Dokument schließen dcPrint.EndDoc(); // Druckergerätekontext löschen dcPrint.DeleteDC(); MessageBox("Daten wurden erfolgreich gedruckt", "Info", MB_ICONEXCLAMATION); } else { MessageBox("Fehler! Dokument konnte nicht gedruckt werden", "Fehler!", MB_ICONEXCLAMATION); } } } }

Antwort von



Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: