如何改变打印机纸张类型

woyaoxiazai2012 2010-12-22 02:00:47
//------------------------------------------------------------
// 函数名:Print_Set
// 设置打印机纸盒
// 参数:zh--纸盒号 (0为默认) fx:方向 0:默认纵向 1:横向 papasize:纸张类型 0A4 1:A5
//------------------------------------------------------------
void Print_Set(int zh,int papasize,int fx )
{

HDC aa;
char *ADevice, *ADriver, *APort;
THandle DeviceMode;
PDeviceMode DevMode;
char PrinterName[128];
//int dpi;

ADevice = new char[100];
ADriver = new char[100];
APort = new char[100];
//dpi = 1000;

//获取打印机
Prntr->GetPrinter(ADevice, ADriver, APort, DeviceMode);

strcpy(PrinterName,ADevice);
//获取PDevMode结构
DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);


if( zh != 0 )
DevMode->dmDefaultSource = zh;


if( papasize == 0 )
{
DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
DevMode->dmPaperSize=DMPAPER_A4;
}
else
{
DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
DevMode->dmPaperSize=DMPAPER_A5;
;
}

if( fx == 1 )
{

DevMode->dmOrientation=DMORIENT_LANDSCAPE;
}
else
{
DevMode->dmOrientation=DMORIENT_PORTRAIT;
}




ResetDC( Prntr->Handle,DevMode );
GlobalUnlock((void *)DeviceMode);

return;
}

我调用这个函数设定打印机,纸盒号和打印方向都可以成功改变,但纸张类型却失败了。DMPAPER_A5设定无效。snmp协议跟踪出来,发给打印机的命令还是选择的A4,始终是A4,换成自定义的也是A4。很奇怪啊。有没有高人指点一下啊,十万火急。
...全文
290 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-12-22
  • 打赏
  • 举报
回复
移帖~。~!
魔方幻影 2010-12-22
  • 打赏
  • 举报
回复
接分~。~!
woyaoxiazai2012 2010-12-22
  • 打赏
  • 举报
回复
晕,解决了,程序没问题。分给第一个回帖的

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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