1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
HANDLE hDriver;
char * szDriver,
* szDevice,
* szOutput;
if(!::OpenPrinter(_T("HP LaserJet"),&hDriver,NULL)) {AfficheErreur(_T("OpenPrinter")); return ;}
if(!hDriver) {AfficheErreur(_T("Tst HPrinter")); return ;}
DWORD dwBufSize = 0;
LPDEVMODE lpDM;
// get DEVMODE stuff from driver
dwBufSize =::DocumentProperties( NULL,
(HANDLE)hDriver,
(LPSTR)szDevice,
(LPDEVMODE)NULL,
(LPDEVMODE)NULL,
(DWORD) 0);
// alloc space for devmode stuff
HANDLE hDevMode= GlobalAlloc(GMEM_MOVEABLE, dwBufSize);
lpDM = (LPDEVMODE)GlobalLock(hDevMode);
dwBufSize = ::DocumentProperties(NULL,
(HANDLE)hDriver,
(LPSTR)szDevice,
(LPDEVMODE)lpDM,
(LPDEVMODE)NULL,
(DWORD)DM_COPY);
lpDM->dmOrientation = DMORIENT_LANDSCAPE;
lpDM->dmPaperSize = DMPAPER_ENV_C5;
lpDM->dmDefaultSource = DMBIN_MIDDLE;
lpDM->dmFields = DM_ORIENTATION | DM_PAPERSIZE | DM_DEFAULTSOURCE;
dwBufSize = ::DocumentProperties(NULL,
(HANDLE)hDriver,
(LPSTR)szDevice,
(LPDEVMODE)lpDM,
(LPDEVMODE)lpDM,
(DWORD)DM_IN_BUFFER | DM_OUT_BUFFER);
ClosePrinter(hDriver);
CDC * pDC2 = new CDC;
pDC2->CreateDC(szDriver,szDevice,szOutput,lpDM);
pDC2->m_bPrinting = TRUE;
// Unlock memory handle.
::GlobalUnlock(hDevMode);
DOCINFO di; ::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = "Carte personalisée";
BOOL bRet=TRUE;
// start document printing process
if (pDC2->StartDoc(&di)!= SP_ERROR)
{
pDC2->StartPage ();
// Traitement perso
...
pDC2->EndPage(); // fin de page
pDC2->EndDoc();
}
else
{
AfficheErreur(_T("Open Print"));
}
delete pDC2;
if(hDevMode != NULL)
{
DEVMODE FAR* pDevMode =(DEVMODE FAR*)GlobalLock(hDevMode);
::GlobalFree(hDevMode);
} |
Partager