The study of Programming Windows with MFC-printing tips
Using the Print Dialog’s Selection Button
pInfo->m_pPD->m_pd.Flags&~PD_NOSELECTED
pInfo->m_pPD->m_pd.Flags|PD_SELECTED
(PRINTDLG CPrintDialog::m_pd )
Adding Default Pagination Support
CSIZE size;
CPrintInfo pi;
if(AfxGetApp()->GetPrinterDeviceDefault(&pi.m_pPD->m_pd))
{
HDC hDC=pi.m\_pPD->m\_pd;
if(hDC==NULL)
hDC=pi.m\_pPD->CreatePrinterDC();
else
\{
CDC dc;
dc.Attach(hDC);
size.cx=dc.GetDeviceCaps(HORZRES);
size.cy=dc.GetDeviceCaps(VERTRES);
::DeleteDC(dc.Detach());
\}
}
Enumerating Printers
#include
![Image 1][]…
DWORD dwSize,dwPrinter;
::EnumPrinters(PRINT_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinter);
BYTE *pBuffer=new BYTE[dwSize];
::EnumPrinters(PRINT_ENUM_LOCAL,NULL,5,pBuffer,dwSize,&dwSize,&dwPrinter);
if(dwPrinter!=0)
{
PRINTER\_INFO\_5 \*pPrinter=(PRINTER\_INFO\_5\*)pBuffer; // in Windows NT or Windows 2000, use PRINTER\_INFO\_4 structures instead
for(DWORD i=0;i<dwPrinter;i++)
\{
pComboBox->addString(i,pPrinter->pPrinterName);
pPrinter++;
\}
}
![Image 1][]…
//a printer selected from combobox and create printerdc
CString nStrPrinterName;
int nIndex=pComboBox->GetCurSel();
pComboBox->GetLBText(nIndex,nStrPrinterName);
CDC dc;
dc.CreateDC(NULL,nStrPrinterName,NULL,NULL);
[Image 1]:
还没有评论,来说两句吧...