R
@Henkes
Erstmal Danke für die Links. Zwar haben mir diese nicht unmittelbar helfen können, weil Sie nicht unbedingt mein Problem behandeln, aber trotzdem haben sie mich auf die zündende Idee gebracht !!
Und wie so oft ist des Rätsels Lösung so einfach, daß ich in meinem Beispielcode nur ein Wort zu ändern habe, um das Bitmap sowohl auf dem Bildschirm als auch auf dem Drucker zu bekommen! Allerdings muß im Vorfeld noch was erledigt werden.
Und zwar muß ich zusätzlich zum Kontext dcScreen, der ja für den Bildschirm steht, noch ein Druckerkontext anlegen, den ich über folgende Methode anlege(hab ich aus einen deiner Links) :
CDC prtDC;
if( AfxGetApp()->GetPrinterDeviceDefaults(&printInfo.m_pPD->m_pd) )
{
HDC hDC = printInfo.m_pPD->m_pd.hDC;
if (hDC == NULL)
hDC = printInfo.m_pPD->CreatePrinterDC();
if(hDC !=NULL)
{
prtDC.Attach(hDC);
}
else
{
AfxMessageBox("Can not find printer. Please check installed/default printers.");
return;
}
}
Und jetzt kommt's: Wenn ich diesen Kontext habe, muß ich ihn nur an Stelle von '&dcScreen' in der Zeile
bitmap.CreateCompatibleBitmap (&dcScreen, 100, 100);
einsetzen und schon wird das Bitmap sowohl auf Monitor als auch Drucker ausgegeben
Im Gesamten sieht dann der Code so aus ( inkl davorigem Anlegen des Druckkontexts):
CClientDC dcScreen (this);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap (&prtDC, 100, 100);
CDC dcMem;
dcMem.CreateCompatibleDC (&dcScreen);
CBrush brush (RGB (0, 0, 0));
dcMem.SelectObject (&bitmap);
dcMem.FillRect (CRect (0, 0, 100, 100), &brush);
dcMem.StretchBlt(x1,y1,...);
[ Dieser Beitrag wurde am 26.05.2003 um 17:04 Uhr von rg_Basser editiert. ]
[ Dieser Beitrag wurde am 26.05.2003 um 17:06 Uhr von rg_Basser editiert. ]