C++Builder中動態(tài)更改自定義打印紙張

字號:

因網(wǎng)上只有Delphi例子本人在用CB編寫時發(fā)現(xiàn)有一些例子不能用,所以一生氣就索性查了查資料自己寫了,怕網(wǎng)友們在用編程時也遇見此類情況,就馬上傳了上來。
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
     {
     char *ADevice, *ADriver, *APort;
     THandle DeviceMode;
     PDeviceMode DevMode;
     int length,width;
     length=1400;
     width=2410;//設(shè)定自定義紙張的尺寸單位為0.1毫米
     ADevice =new char[100];
     ADriver =new char[100];
     APort =new char[100];
     //獲取打印機
     Printer()->GetPrinter(ADevice, ADriver, APort,DeviceMode);
     //獲取PDevMode結(jié)構(gòu)
     DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);
     //設(shè)定可以修改的值
     DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
     DevMode->dmFields = DevMode->dmFields|DM_PAPERLENGTH;
     DevMode->dmFields = DevMode->dmFields|DM_PAPERWIDTH;
     //設(shè)定要修改的值
     DevMode->dmPaperSize=DMPAPER_USER;//設(shè)為自定義紙張
     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();
     }