中超

Windows系统打印选项在Linux上的移植 (1)

2019-09-13 20:42:07来源:励志吧0次阅读

移植是实现传统高层应用程序跨平台运行的一项核心技术。打印子系统移植是应用程序移植的重要组成部分。实现打印选项设置模块在不同平台上的用户接口UI(User Interface)转换是实现打印子系统移植过程中的一项核心技术。本文将重点阐述一种使用GNOME Print在Linux平台上实现Windows打印选项设置的移植方法。 本文第一节将简要介绍Windows平台上的打印设置和相关数据结构;第二节介绍Linux平台上GNOME Print的打印设置和相关数据结构;第三节介绍GNOME Print打印设置的移植架构;第四节介绍移植的细节;第五节则进一步讨论Linux平台上GNOME Print以外的打印设置方法;本文的简要总结在第六节中给出。 1. Windows打印选项设置 图1 Windows系统打印设置对话框在Windows平台上,用户可以通过Windows系统打印设置对话框(如图1所示)来完成对打印选项的设置。程序员可以通过调用Windows API DocumentProperties() 来获得该系统打印设置对话框。图1为一款EPSON打印机的打印设置对话框,用户可以通过该对话框来设置打印属性,如打印纸张的大小和纸张的方向等等。该对话框是Windows为用户提供的一个友好的前台UI界面;与之相对应的后台核心数据则被存储在Windows标准数据结构DEVMODE中。 DEVMODE结构的原形定义如下: typedef struct _devicemode { BCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; WORD dmDriverExtra; DWORD dmFields; union { struct { short dmOrientation; //打印纸张方向 short dmPaperSize; //打印纸张名称 short dmPaperLength; //打印纸张长度 short dmPaperWidth; //打印纸张宽度 short dmScale; short dmCopies; short dmDefaultSource; short dmPrintQuality; }; POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; };…}

在此简要介绍DEVMODE结构的三个重要参数:打印纸张名称,打印纸张方向,和打印纸张大小(长度和宽度)。其他参数由于篇幅限制,在此不作逐一解析,有兴趣的读者请参考MSDN。以下以n_DevMode为例进行说明: DEVMODE n_DevMode; (1) 打印纸张名称在Windows中被定义为: n_DevMode.dmPaperSize Windows将纸张名称预定义为一系列整数宏,如DMPAPER_LETTER,DMPAPER_A4等等。 (2) 打印纸张方向在Windows中被定义为: n_DevMode.dmOrientation 该参数可以取如下两个值:DMORIENT_PORTRAIT表示纸张方向为纵向;DMORIENT_LANDSCAPE表示纸张方向为横向。 (3) 打印纸张的长度和宽度在Windows中被定义为: n_DevMode.dmPaperLengthn_DevMode. dmPaperWidth

这两个参数的单位为0.1毫米。

芪斛楂颗粒的作用
小孩总是流鼻血是怎么回事
热淋清颗粒的用量
婴儿感冒药
分享到: