数学建模社区-数学中国

标题: C++Builder编程中动态更改自定义打印纸张 [打印本页]

作者: 韩冰    时间: 2005-1-26 12:24
标题: C++Builder编程中动态更改自定义打印纸张
<>因网上只有Delphi例子本人在用CB编写时发现有一些例子不能用,
1 _7 S% T4 k' V& A. j: l所以一生气就索性查了查资料自己写了,怕网友们在用编程时也遇见此类情况,
4 o) q* F- J. y# p7 a% u4 Z6 j就马上传了上来。 </P>$ |9 n3 k$ I2 c
<>void __fastcall TForm1::BitBtn1Click(TObject *Sender) ) m1 v. Z2 h2 l/ `5 R
{
8 z. C$ `) x# f7 F; `char *ADevice, *ADriver, *APort; 5 i! e  N$ \1 N& K
THandle DeviceMode; 8 V" M7 B/ Z9 Z( v7 g
PDeviceMode DevMode;
0 G+ Q8 i- Q- C3 i0 p7 Eint length,width;
6 Q. d. g8 m# Q/ _  length=1400; ! \- v" y9 z  Z
  width=2410;//设定自定义纸张的尺寸单位为0.1毫米 . E/ \& E- l" B4 u, ]
  ADevice =new char[100]; ) S3 P0 O8 |# b& c) ]- G
  ADriver =new char[100];
0 ]8 e% Z/ f5 T0 x) |- s4 f  APort =new char[100];
! A9 D. t( G3 P" Y8 _& ^  //获取打印机
% `# l3 Q! w3 E+ f1 O3 B5 [  ^  Printer()-&gt;GetPrinter(ADevice, ADriver, APort,DeviceMode);
4 h% K/ W7 g6 l, `' r  //获取PDevMode结构
. _, p' F8 |- `& p6 p  DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode); / f3 O( Z- |$ {8 r8 ]) y$ i
  //设定可以修改的值
7 r4 J2 D2 C  k" s  |* q" j/ B( @  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERSIZE; + {+ r5 w& J" ]' l7 R4 J
  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERLENGTH;
1 _1 S2 ?1 H1 M3 z" ~  DevMode-&gt;dmFields = DevMode-&gt;dmFields|DM_PAPERWIDTH; ' r5 V) f" n) Q. `
  //设定要修改的值 # w' l/ f: Z% d  c, K% g8 ^
  DevMode-&gt;dmPaperSize=DMPAPER_USER;//设为自定义纸张
3 i2 G+ g3 o% `9 p/ z# \  DevMode-&gt;dmPaperLength=length;
6 C" M" @6 F3 R3 _' Y9 |) F  DevMode-&gt;dmPaperWidth=width; </P>
* R( s* C' i0 ]  X# o* q# n+ ~<>  //测试打印
" p8 w) r5 Q4 A1 B, a6 y  Printer()-&gt;BeginDoc();
0 b$ R+ m6 R( @- h+ ?! v  TextOut(Printer()-&gt;Handle, 0, 0, "-----------------",17); ; }. f5 [1 l4 F! u7 l& ~. ]
  Printer()-&gt;NewPage(); 8 a7 F* l/ S+ U7 S1 p
  TextOut(Printer()-&gt;Handle, 0, 0, "++++++++++++++++++",18); ' a1 A/ X0 a' E( j$ S) f3 W
  Printer()-&gt;NewPage();
! I' I, |( L5 y0 j3 G# Y1 f  Printer()-&gt;EndDoc();
2 Z! w. N, a9 N5 I; h} </P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5