C++Builder程式設計中動態更改自定義列印紙張 (轉)

worldblog發表於2007-12-06
C++Builder程式設計中動態更改自定義列印紙張 (轉)[@more@]C++Builder中動態更改自定義列印紙張

因網上只有例子本人在用CB編寫時發現有一些例子不能用,
所以一生氣就索性查了查資料自己寫了,怕網友們在用程式設計時也遇見此類情況,
就馬了上來。

void __fastcall TForm1::BitBtn1Click(T *Sender)
{
char *ADevice, *A, *APort;
THandle DeviceMode;
PDeviceMode DevMode;
int length,width;
 length=1400;
 width=2410;//設定自定義紙張的尺寸單位為0.1毫米
 ADevice =new char[100];
 ADriver =new char[100];
 APort =new char[100];
 //獲取印表機
 Printer()->GetPrinter(ADevice, ADriver, APort,DeviceMode);
 //獲取PDevMode結構
 DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);
 //設定可以修改的值
 DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
 DevMode->dmFields = DevMode->dmFields|DM_PAENGTH;
 DevMode->dmFields = DevMode->dmFields|DM_PAPERWIDTH;
 //設定要修改的值
 DevMode->dmPaperSize=DMPAPER_USER;//設為自定義紙張
 DevMode->dmPaperLength=length;
 DevMode->dmPaperWidth=width;

 //測試列印
 Printer()->BeginDoc();
 TextOut(Printer()->Handle, 0, 0, "-----------------",17);
 Printer()->NewPage();
 TextOut(Printer()->Handle, 0, 0, "++++++++++++++++++",18);
 Printer()->NewPage();
 Printer()->EndDoc();
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988913/,如需轉載,請註明出處,否則將追究法律責任。

相關文章