您的位置:首页 > 其它

The study of Programming Windows with MFC-printing tips

2010-07-31 09:40 519 查看
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<winspool.h>





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++;

}

}





//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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: