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

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

被折叠的 条评论
为什么被折叠?



