数学建模社区-数学中国
标题:
C++Builder编程中动态更改自定义打印纸张
[打印本页]
作者:
韩冰
时间:
2005-1-26 12:24
标题:
C++Builder编程中动态更改自定义打印纸张
<
>因网上只有Delphi例子本人在用CB编写时发现有一些例子不能用,
" N4 _. T- {* D2 I& h& N" X
所以一生气就索性查了查资料自己写了,怕网友们在用编程时也遇见此类情况,
+ \7 M" [2 ?/ ?0 K9 V+ V
就马上传了上来。 </P>
5 G5 I4 K/ d9 D5 z$ x4 ~0 K
<
>void __fastcall TForm1::BitBtn1Click(TObject *Sender)
- W4 e+ y: K8 f. q
{
& {$ L3 z- s3 I7 y4 a7 k
char *ADevice, *ADriver, *APort;
0 V* w% \ e* b. d) T# } u
THandle DeviceMode;
' k1 c3 d: m1 n; }
PDeviceMode DevMode;
) Z* _" s/ }1 G9 ^% U" M
int length,width;
7 P- ~8 T/ m2 ~1 Y6 k
length=1400;
) e" Y3 n/ s. g
width=2410;//设定自定义纸张的尺寸单位为0.1毫米
' O( P+ [) N1 ~( X: }
ADevice =new char[100];
, n4 E) q9 o& h J5 L
ADriver =new char[100];
( Y9 J9 T; [ P2 o- E; O. K* j' O
APort =new char[100];
( v ~- K5 }. R9 m* H0 A) A8 B( o, b
//获取打印机
: ^ v k* d; r# I0 |% T9 V0 ~
Printer()->GetPrinter(ADevice, ADriver, APort,DeviceMode);
7 V5 ~; [1 ?. _- d( U. E% K1 w
//获取PDevMode结构
: t9 I+ b [& e. Z, X
DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);
2 h3 r7 o7 g3 M* E* Z
//设定可以修改的值
: Q- j7 R! Y7 E t3 a! m4 V
DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
2 q4 m# o7 {' v/ \$ X* r
DevMode->dmFields = DevMode->dmFields|DM_PAPERLENGTH;
7 e1 ?) N4 G8 H$ E' e" R [# V$ ?
DevMode->dmFields = DevMode->dmFields|DM_PAPERWIDTH;
" ]9 F" |) Y/ \1 i
//设定要修改的值
: p/ y J4 E2 x- }2 X
DevMode->dmPaperSize=DMPAPER_USER;//设为自定义纸张
) I! c1 T8 u& x8 W5 k
DevMode->dmPaperLength=length;
- g8 |/ Q- W5 h* G( J! O
DevMode->dmPaperWidth=width; </P>
6 K& c% B1 ~7 ^' P9 d8 o# D
<
> //测试打印
; t8 z3 X7 c% a0 ^. T' j! H
Printer()->BeginDoc();
% R5 c4 b7 u# C4 k
TextOut(Printer()->Handle, 0, 0, "-----------------",17);
3 G3 v1 T3 f% u; M$ R. }: ?% P
Printer()->NewPage();
* o4 G* l2 N* e) p) J& i
TextOut(Printer()->Handle, 0, 0, "++++++++++++++++++",18);
2 }1 F# x, b0 }8 q; E! j/ b5 f
Printer()->NewPage();
H1 b$ h* o( Z* G, D% T
Printer()->EndDoc();
& x! ^- A3 I3 U: g4 Q5 ^1 [
} </P>
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5