数学建模社区-数学中国

标题: 让C/C++图形程序独立运行 [打印本页]

作者: lckboy    时间: 2004-6-4 11:54
标题: 让C/C++图形程序独立运行
<FONT size=3>  C/C++语言提供了十分丰富的图形函数,图形函数文件为Graphics.h,使用图形函数前须先将屏幕设置为图形模式,C/C++语言提供了下面的函数:
! W8 G* z+ F, R0 g$ r! W9 g% G  void far initgraph(int far *GD,int far *GM,char *P);
& Q/ R7 U  W; R8 Z1 k
) S  x: K4 t# Z' L* L* H  其中,GD和GM分别表示图形驱动程序和图形模式,P指图形驱动程序所在的目录路径。
# b7 h5 S" X5 u' S4 Y& p% w& j9 S' }1 C* R' N
  图形驱动程序由Borland公司(对于Turbo C和Borland C++)提供,同时C/C++语言还提供了退出图形状态的函数closegraph(),格式为:, |+ N4 r1 l  E; i, }
  void far closegraph(void);! G1 a0 J( b+ T! x. C- l% V& k

% L4 O( _4 i) V1 T  许你经常在用C/C++语言编写一些图形程序,但是总不能脱离C/C++语言环境独立运行,我们怎样来解决呢?下面是实现图形程序独立运行的具体步骤:% x4 y* }. |0 K

3 s% o5 k- M2 m9 e4 Q  1.将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:
$ @" ]/ }- r" }  C:\TC&gt;BGIOBJ EGAVGA2 P3 }( d: ~+ }  W1 l! Z1 C
' q" ^- f: ]+ H. [+ N5 _* E. K2 z0 y. O
  按同样的办法,将字体文件*.CHR转换成目标文件*.OBJ:. t" q2 A% s+ D6 U* D5 B/ A; o
</FONT>
9 k6 t8 @* V) [# h* Q/ g" @3 K4 V$ s0 S3 b

' z$ y7 N  q- S. {6 T<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
7 G6 s6 M4 V$ M9 _) G: t6 L
8 Q) G9 a  ~& b2 ~<TR>0 Z% q8 `5 h5 {
<TD>  C:\TC&gt;BGIOBJ TRIP/ g* a$ t4 v1 ~' O& n
  C:\TC&gt;BGIOBJ LITT
; _- j+ y7 _+ k/ X  [" f2 r8 r; d  C:\TC&gt;BGIOBJ SANS, ~  F+ Q% M/ Q7 p$ I- _
  C:\TC&gt;BGIOBJ GOTH</TD></TR></TABLE>( r3 r" w6 D* D0 l: A/ D; d( K& l
<>  2.将上述建立的OBJ文件加入到GRAPHICS.LIB库文件中,具体方法如下:
9 ], j9 t0 z& q! v" r</P>; U  R* V/ U2 q; S" R# P
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
# H/ m( s* O: |$ p% K1 N
) D: H4 b7 g) [<TR>! E7 s8 t7 p- P: U4 e1 b: F
<TD>  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+EGAVGA
- k5 U$ p. j& Q" n" D4 N9 f  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+TRIP4 j4 @9 x! K8 ~& w: c# h  a
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+LITT
) ^$ ?. ]- i$ Y) I. [! \- g0 u/ z  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+SANS% N: |% e# u4 X% ?
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+GOTH</TD></TR></TABLE>7 L# {; j  A; y, X( H9 D7 k+ g
<>  也可以使用TLIB、PRJ程序代替TLINK。7 u! R  S6 V& \6 q) u& c& H

8 N$ {0 Q) `8 N1 x9 I+ Y# R; m) i  3.在程序中调用initgraph()函数前,应加上如下语句:! o. y' e0 |* p. _/ v3 i1 p( H5 k
  registerbgidriver(EGAVGA-driver);& ?4 e! w% C" ?8 g* n0 L6 B

* s, z% _; W+ w2 H4 y  它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在装入字体文件之前要加上如下语句:
! D% B3 [5 c& Z" R5 E& U. O, K  registerbgifont(字体文件名);! F( j; \/ J" l1 D, X5 w
! Z$ |4 T6 t+ ^, x5 A+ [* K
  4.通过上述处理后,编译连接后的执行程序就可以在任何目录下运行了。这时,将屏幕初始化为图形模式的函数可改写为:
+ J/ c6 [9 w5 m3 S( t; I2 @7 U</P>
. U# T$ \  r+ o8 ?: K7 W- |<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
" F1 m3 S9 V; }5 e6 P( `
2 [" Z0 o7 t  v5 z3 ^" M<TR>0 M# f5 \! F- V: d1 I; C
<TD>  void InitGra(void)
. T% l- d4 \5 a5 u+ k% r/ k% l9 H; x9 V  {int GD=DETECT,GM;
, \0 }, E# q3 {5 H  registerbgidriver(EGAVGA_driver);
5 z) Z0 ~3 u" l' X) X+ ?3 P  registerbgifont(triplex_font);9 H3 N0 j( i2 A. M# D3 _/ a: `/ ^
  registerbgifont(small_font);9 u# E- \9 F9 F, d+ l" H5 c/ I
  registerbgifont(sansserif_font);$ J7 Q! i0 @3 H: b0 ?/ {; Z/ K
  registerbgifont(gothic_font);  K5 G4 @0 |. [$ W8 `  \! [4 z/ a6 h, O
  initgraph(&amp;GD,&amp;GM,"");; k+ ~& ?( u# u
  }</TD></TR></TABLE>
4 O# u! q- j" s$ i/ P- D# s6 b9 ~<>  按照以上步骤,就能实现图形程序的独立运行</P>




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