Windows自定义打印的实现

Windows平台上通过API进行自定义打印的实现方法,包括打印机选择、打印设置对话框的调用,程序内设置打印选项,以及打印流程和字体设置等关键步骤的探讨。

Windows自定义打印的实现之一

其实在Windwos中调用Windows API实现打印是比较简单的,而且具有代码紧凑、实现灵活的优点。我们只要掌握了几个要点,就可以随心所欲的打印了。下面我们将一一讨论:

  • 打印机的选择,打印设置对话框的调用
  • 在程序中设置打印选项
  • 打印单位的转换
  • 打印基本流程
  • 打印字体的设置

打印机的选择,打印设置对话框的调用

这个不多说了,相关的主要API只有一个--PrintDlg(LPPRINTDLG lppd)--看例子代码。

    PRINTDLG printInfo;
    ZeroMemory(&printInfo,sizeof(printInfo));  //清空该结构
    printInfo.lStructSize = sizeof(printInfo);   
    printInfo.hwndOwner = 0;   
    printInfo.hDevMode = 0;
    printInfo.hDevNames = 0;

    //这个是关键,PD_RETURNDC 如果不设这个标志,就拿不到hDC了
    //            PD_RETURNDEFAULT 这个就是得到默认打印机,不需要弹设置对话框
    printInfo.Flags = PD_RETURNDC | PD_RETURNDEFAULT;  

    //调用API拿出默认打印机
    PrintDlg(&printInfo);

    //看看出错没有
    DWORD rst = CommDlgExtendedError();
    if(rst != 0)
    {
        //出错了,清空标志再次调用API,此时就会弹出打印设置对话框供用户选择了
        printInfo.Flags = 0;
        PrintDlg(&printInfo);
    }

从上面的代码,我们就知道弹不弹对话框的关键是设置PRINTDLG结构的Flags字段。

在程序中设置打印选项

要想在程序中定制我们的打印选项,DEVMODE结构就是关键了。在这里我们只举例如何为打印设定自定义纸张。更详细的设置信息可以查询MSDN。

    //首先得到DEVMODE结构,同时申请系统锁定,我们要修改它了
    LPD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值