请教如何给打印机设置一个打印长度超过32767mm的问题

dbgchen 2013-03-12 05:26:25
Hi:
最近遇到了一个困惑,如何将一个打印机的打印长度设置到3.2米以上。请大家指点:

首先,对打印机设置打印尺寸可以通过SetPrinter API来完成。MSDN中SetPrinter函数的声明如下:


BOOL SetPrinter( HANDLE hPrinter, // handle to printer object
DWORD Level, // information level
LPBYTE pPrinter, // printer data buffer
DWORD Command // printer-state command
);


当Level参数的值为9时,pPrinter的值是一个PRINTER_INFO_9类型,PRINTER_INFO_9结构体的定义如下:


typedef struct _PRINTER_INFO_9 {
LPDEVMODE pDevMode;
} PRINTER_INFO_9, *PPRINTER_INFO_9;


结构体中存放的是指向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;
};

short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
BYTE dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
union {
DWORD dmDisplayFlags;
DWORD dmNup;
}
DWORD dmDisplayFrequency;
#if(WINVER >= 0x0400)
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
DWORD dmPanningWidth;
DWORD dmPanningHeight;
#endif
#endif /* WINVER >= 0x0400 */
} DEVMODE;


问: dmPaperLength 和 dmPaperWidth 是以1/10mm为单位的,而 dmPaperLength 和 dmPaperWidth定义的为short类型,其取值范围为 -32768 ~ 32767之间。因而可以得出每张纸的最大打印幅面为 宽:3.2767m * 高: 3.2767m。而市面上很多大幅面的打印机,单张可以打印到超过3米以上。对于超过32767这样的数据是如何正确的设置到打印机的呢?如Epson Stylus Pro 4880C,它的最大长度可以设置到15m。

...全文
545 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbgchen 2013-03-18
  • 打赏
  • 举报
回复
再顶,等高手来解决。
dbgchen 2013-03-14
  • 打赏
  • 举报
回复
自己再顶一下。
山伟 2013-03-13
  • 打赏
  • 举报
回复
这种情况恐怕不能使用MFC的打印流程。需要重新编写打印驱动来支持。 你可以搜搜看打印驱动如何做。
dbgchen 2013-03-13
  • 打赏
  • 举报
回复
自己顶一下!
dbgchen 2013-03-13
  • 打赏
  • 举报
回复
在微软上找了一个打印机驱动开发指南,全english的,读的是懂非懂的,无法进行实际开发。不知道哪位朋友有中文的指南或好的资料共享下。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧