C
Schau dir mal diese Funktion an:
HDC GetStandardPrinterDC()
{
DWORD dwNeeded, dwReturned;
HDC hDC;
PRINTER_INFO_4* pInfo4;
PRINTER_INFO_5* pInfo5;
if(GetVersion() & 0x80000000)
{
EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 5, NULL, 0, &dwNeeded, &dwReturned);
pInfo5 = (PRINTER_INFO_5*)(malloc(dwNeeded));
EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 5, (PBYTE)pInfo5, dwNeeded,
&dwNeeded, &dwReturned);
hDC = CreateDC(NULL, pInfo5->pPrinterName, NULL, NULL);
free(pInfo5);
}
else
{
EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 4, NULL, 0, &dwNeeded, &dwReturned);
pInfo4 = (PRINTER_INFO_4*)(malloc(dwNeeded));
EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 4, (PBYTE)pInfo4, dwNeeded,
&dwNeeded, &dwReturned);
hDC = CreateDC(NULL, pInfo4->pPrinterName, NULL, NULL);
free(pInfo4);
}
return hDC;
}
Sie liefert die den HDC des Standarddruckers zurück.
Drucken kann man damit so:
bool PrintMyPage()
{
bool bSuccess = true;
static DOCINFO di = { sizeof(DOCINFO), TEXT("Print1: Druck") };
HDC hDC;
int cxPage, cyPage;
if((hDC = GetStandardPrinterDC()) == NULL)
return false;
cxPage = GetDeviceCaps(hDC, HORZRES);
cyPage = GetDeviceCaps(hDC, VERTRES);
if(StartDoc(hDC, &di) > 0)
{
if(StartPage(hDC) > 0)
{
// Die GDI (Zeichen-) Aufrufe auf den HDC.
// cxPage/cyPage sind die Größe der Seite in Pixeln.
// ACHTUNG! Ein Pixel ist wahrscheinlich ziemlich winzig.
if(EndPage(hDC) > 0)
EndDoc(hDC);
else
bSuccess = false;
}
}
else
bSuccess = false;
DeleteDC(hDC);
return bSuccess;
}
[ Dieser Beitrag wurde am 28.10.2002 um 18:06 Uhr von cd9000 editiert. ]