韩冰 发表于 2005-1-26 12:24

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

<P>因网上只有Delphi例子本人在用CB编写时发现有一些例子不能用,
所以一生气就索性查了查资料自己写了,怕网友们在用编程时也遇见此类情况,
就马上传了上来。 </P>
<P>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;
  ADriver =new char;
  APort =new char;
  //获取打印机
  Printer()-&gt;GetPrinter(ADevice, ADriver, APort,DeviceMode);
  //获取PDevMode结构
  DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);
  //设定可以修改的值
  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERSIZE;
  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERLENGTH;
  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERWIDTH;
  //设定要修改的值
  DevMode-&gt;dmPaperSize=DMPAPER_USER;//设为自定义纸张
  DevMode-&gt;dmPaperLength=length;
  DevMode-&gt;dmPaperWidth=width; </P>
<P>  //测试打印
  Printer()-&gt;BeginDoc();
  TextOut(Printer()-&gt;Handle, 0, 0, "-----------------",17);
  Printer()-&gt;NewPage();
  TextOut(Printer()-&gt;Handle, 0, 0, "++++++++++++++++++",18);
  Printer()-&gt;NewPage();
  Printer()-&gt;EndDoc();
} </P>
页: [1]
查看完整版本: C++Builder编程中动态更改自定义打印纸张