如何改变打印机纸张类型
//------------------------------------------------------------
// 函数名: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。很奇怪啊。有没有高人指点一下啊,十万火急。