000
11.11.2005, 12:19 Uhr
MSS-Software
|
Hallo.
Ich will hier ein Bitmap bei mir mit auf die Druckausgabe packen, aber bei SelectObejct kommt er mir immer mit einer Fehlermeldung zurück. Ich hab keine AHnung warum.
Hier der Code:
C++: |
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_BITMAP1) == 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(); }
|
|