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
| BOOL bResult = FALSE;
LPPRINTDLGEXW ptPrt = NULL;
LPPRINTPAGERANGE ptPageRanges = NULL;
ptPrt = calloc(1, sizeof(PRINTDLGEXW));
ptPageRanges = calloc(10, sizeof(PRINTPAGERANGE));
ptPrt->lStructSize = sizeof(PRINTDLGEXW);
ptPrt->hwndOwner = gtPPMreportHWnd;
ptPrt->hDevMode = NULL;
ptPrt->hDevNames = NULL;
ptPrt->hDC = NULL;
//ptPrt->Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC |
// PD_ENABLEPRINTTEMPLATE | PD_NOPAGENUMS;;
ptPrt->Flags = PD_RETURNDC | PD_COLLATE | PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE;
ptPrt->Flags2 = 0;
ptPrt->ExclusionFlags = 0;
ptPrt->nPageRanges = 0;
ptPrt->nMaxPageRanges = 10;
ptPrt->lpPageRanges = ptPageRanges;
ptPrt->nMinPage = 1;
ptPrt->nMaxPage = 1000;
ptPrt->nCopies = 1;
ptPrt->hInstance = gtAppHInst;
ptPrt->lpCallback = (IUnknown*)PrintDlgProc;
ptPrt->nPropertyPages = 0;
ptPrt->lphPropertyPages = NULL;
ptPrt->nStartPage = START_PAGE_GENERAL;
ptPrt->dwResultAction = 0;
ptPrt->lpPrintTemplateName = (LPWSTR)MAKEINTRESOURCEW(IDR_PRNTDLG);
bResult = !PrintDlgExW((LPPRINTDLGEXW)ptPrt);
*phPrtDC = ptPrt->hDC;
if(ptPrt!=NULL)
free(ptPrt);
if(ptPageRanges!=NULL)
free(ptPageRanges);
return bResult; |
Partager