The study of Programming Windows with MFC-printing tips

本文介绍如何在C++中使用PrintDialog组件进行打印设置,包括选择打印机、添加默认分页支持等操作,并展示了如何枚举本地可用的打印机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值