Druckfehler
-
Hallo.
Eigentlich dachte ich, der Tag würde gut anfangen. Naja, dem ist nicht so.
Folgendes: Habe gestern Druckausgabe geschrieben wo auch Logo mitgedruckt wird etc. Funktionierte alles wunderbar. Hab dann gestern zu Hause noch ein bissl weiter gemacht und als ich heut morgen das neu compilierte gedruckt habe, kam kein Logo. Nicht weiter tragisch. Bin dann in die letzte Version von gestern gegangen, hab NICHTS verändert sondern einfach nur die EXE ausgeführt und siehe da: kein Logo.
Wo liegt bitte hier der Fehler???
-
Hast du dein Logo vielleicht gelöscht? Als du dein Programm mit nach Hause genommen hast.
-
darauf wäre zu schließen, aber die EXE, die ich gestern erstellt habe, wurde weder verschoben noch neu compiliert noch sonst was und da funzt es ja auch nicht
-
Seltsam, und beim Debuggen gibt er auch überall die richtigen Werte an?
-
hier
das ist der sourcecode dazu
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); //dlgPrint.GetDefaults(); if (dlgPrint.DoModal() == IDOK) { CDC pDC_print; // Den Drucker-DC vom Dialogfeld mit einem // CDC-Objekt verbinden pDC_print.Attach(dlgPrint.GetPrinterDC()); // Eine DOCINFO-Struktur erzeugen und füllen DOCINFO myPrintJob; myPrintJob.cbSize = sizeof(myPrintJob); myPrintJob.lpszDocName = "MeinDruckAuftrag"; myPrintJob.lpszOutput = NULL; myPrintJob.lpszDatatype = NULL; myPrintJob.fwType = NULL; pDC_print.SetMapMode(MM_LOMETRIC); if (pDC_print.StartDoc(&myPrintJob)>=0) { // Eine Seite beginnen pDC_print.StartPage(); CBitmap bmp; bmp.LoadBitmap(IDB_LOGO); BITMAP bm; bmp.GetBitmap(&bm); CDC sdc; sdc.CreateCompatibleDC(&pDC_print); sdc.SelectObject(&bmp); const int nBreite = (int)(bm.bmWidth * 1.5); const int nHoehe = (int)(bm.bmHeight * 1.5); pDC_print.StretchBlt(pDC_print.GetWindowExt().cx - nBreite, 0, nBreite, -nHoehe, &sdc, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY); // Seite auswerfen pDC_print.EndPage(); // Dokument schließen pDC_print.EndDoc(); } // Druckergerätekontext löschen pDC_print.DeleteDC(); }
-
Schick. Überhaupt keine Fehlerbehandlung.
-
ja, die fehlerbehandlung brauch ich ja eigentlich nur in den Bitmap reinpacken, weil der rest funzt ja
nur was soll ich da abfragen?
-
warte, ich bastel die mal eben rein und poste dann nochmal den code
-
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); //dlgPrint.GetDefaults(); if (dlgPrint.DoModal() == IDOK) { CDC pDC_print; // Den Drucker-DC vom Dialogfeld mit einem // CDC-Objekt verbinden pDC_print.Attach(dlgPrint.GetPrinterDC()); // Eine DOCINFO-Struktur erzeugen und füllen DOCINFO myPrintJob; myPrintJob.cbSize = sizeof(myPrintJob); myPrintJob.lpszDocName = "MeinDruckAuftrag"; myPrintJob.lpszOutput = NULL; myPrintJob.lpszDatatype = NULL; myPrintJob.fwType = NULL; pDC_print.SetMapMode(MM_LOMETRIC); if (pDC_print.StartDoc(&myPrintJob)>=0) { // Eine Seite beginnen pDC_print.StartPage(); CBitmap bmp; if ( bmp.LoadBitmap(IDB_WIRA) == 0 ) MessageBox("Fehler bei Laden",NULL,MB_OK); BITMAP bm; if ( bmp.GetBitmap(&bm) == NULL ) MessageBox("Fehler2",NULL,MB_OK); CDC sdc; if ( sdc.CreateCompatibleDC(&pDC_print) == 0 ) MessageBox("Fehler",NULL,MB_OK); if ( sdc.SelectObject(&bmp) == NULL ) MessageBox("Fehler3",NULL,MB_OK); const int nBreite = (int)(bm.bmWidth * 1.5); const int nHoehe = (int)(bm.bmHeight * 1.5); if ( pDC_print.StretchBlt(pDC_print.GetWindowExt().cx - nBreite, 0, nBreite, -nHoehe, &sdc, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY) == 0 ) MessageBox("Nicht gedruckt",NULL,MB_OK); // Seite auswerfen pDC_print.EndPage(); // Dokument schließen pDC_print.EndDoc(); } // Druckergerätekontext löschen pDC_print.DeleteDC(); }
-
Also, wenn ich nen Bitmap lade mache ich das mit GetObject() (nicht mit GetBitmap()):
CBitmap bitmap; bitmap.LoadBitmap(IDB_BACKGROUND); BITMAP bm; bitmap.GetObject(sizeof(bm),&bm); // define default size
Ansonsten, kannst du überprüfen, ob LoadBitmap und GetBitmap die korrekten Werte wiedergeben.
-
aja, schau an
ich bekomme den fehler bei SelectObejct
-
wenn ich die referenzierung rausnehme, kommt was
also funktioniert
im testprojekt *gg*
ich übertrag das mal auf mein aktuelles
ne frage:
worin wäre denn dann der unterschied ob GetObject oder GetBitmap?
-
also bei meinem aktuellen projekt macht er immer fehler bei selectObject
egal ob mit oder ohne referenzierung also &
-
Anscheinend der, dass GetObject() auch auf andere Grafik-Objekte angewendet werden kann und GetBitmap() nur auf ein Bitmap. Macht also hier keinen Unterschied.
Ich hatte es selber nur mit GetObject() gelernt.
-
also nur bei select object spuckt er mir fehler aus
keine ahnung warum
-
sdc, pDC_print und bmp sind alle auch nicht NULL?
Und der selbe Quellcode funktioniert in einem anderen Projekt einwandfrei?
-
mom, ich überprüfe das eben
-
häää?
bin ich jetzt total bräsig?
der macht das nicht
if ( (pDC_print != 0) || (sdc != 0) || (bmp != 0) ) MessageBox("ok",NULL,MB_OK);
-
&&, nicht ||
Alle drei müssen != 0 sein.
-
ja gut
ich hatte zuerst auf gleich NULL abgefragt
deswegen
aber der sagt mir was mit mehrgültigen operatoren
'Operator != ist mehrdeutig'