C++Builder中动态更改自定义打印纸张

发表于:2007-05-25来源:作者:点击数: 标签:C++Builder更改打印自定义动态
因网上只有Delphi例子本人在用CB编写时发现有一些例子不能用,所以一生气就索性查了查资料自己写了,怕网友们在用编程时也遇见此类情况,就马上传了上来。 void __fastcall TForm1::BitBtn1Click(TObject *Sender) { char *ADevice, *ADriver, *APort; THand

因网上只有Delphi例子本人在用CB编写时发现有一些例子不能用,所以一生气就索性查了查资料自己写了,怕网友们在用编程时也遇见此类情况,就马上传了上来。

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
            {
            char *ADevice, *ADriver, *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_PAPERLENGTH;
            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();
            }

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)