数学建模社区-数学中国

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

作者: lckboy    时间: 2004-6-4 11:54
标题: 让C/C++图形程序独立运行
<FONT size=3>  C/C++语言提供了十分丰富的图形函数,图形函数文件为Graphics.h,使用图形函数前须先将屏幕设置为图形模式,C/C++语言提供了下面的函数:% z  I: F: O: Y/ u7 Q# k; Q
  void far initgraph(int far *GD,int far *GM,char *P);4 ^2 y5 `, x5 }! N; ?  p

$ s- u/ |; I' }8 I  其中,GD和GM分别表示图形驱动程序和图形模式,P指图形驱动程序所在的目录路径。
& p3 k2 J# d4 h4 j1 Z6 C6 H: b, r* U" Z5 Z2 I- _- d
  图形驱动程序由Borland公司(对于Turbo C和Borland C++)提供,同时C/C++语言还提供了退出图形状态的函数closegraph(),格式为:
; Y0 I$ |8 e5 l; _  void far closegraph(void);
8 Q  O# s! o% N7 g
& H  L1 r# L5 |( {& ]& R  许你经常在用C/C++语言编写一些图形程序,但是总不能脱离C/C++语言环境独立运行,我们怎样来解决呢?下面是实现图形程序独立运行的具体步骤:
1 z! @$ x* T* w( F2 m# T3 T6 ]/ A9 }7 M1 S! J2 D' E
  1.将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:
$ d3 O/ e- R; _9 A: g$ E, t% r2 O  C:\TC&gt;BGIOBJ EGAVGA
% K# D. [: u+ n" v+ J8 _( k0 V' n  l& Z$ Y( J4 I! `$ ]
  按同样的办法,将字体文件*.CHR转换成目标文件*.OBJ:. A- X8 U9 B7 S. X: [0 }
</FONT>
2 w- `. C1 i8 m" y3 F" n  ?# v$ j9 Y& @9 F0 H6 @/ o
' P; |8 ^  ]/ |  _
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>5 S8 V0 x! O  j% Y3 F
! N& [6 E( M6 K  B: _& r7 L
<TR>
1 X% L5 R; e/ ]: @8 O- d8 f<TD>  C:\TC&gt;BGIOBJ TRIP
* B0 ]" A+ g' E* {' ^0 A; U, \6 j  C:\TC&gt;BGIOBJ LITT
, a3 E1 R% Y4 b; o( M: Y  C:\TC&gt;BGIOBJ SANS; T% O$ E* C( D1 Q; J- e3 i
  C:\TC&gt;BGIOBJ GOTH</TD></TR></TABLE>
# [  W0 s# ?( S/ I! q' {2 e<>  2.将上述建立的OBJ文件加入到GRAPHICS.LIB库文件中,具体方法如下:
, F  i- l/ o9 \! [</P>9 F% r- O, \) R% G! V
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
  f( A4 P( h" q' q" L1 R
" m1 L* Z' e' y% S& [. ?6 [/ ~; T3 M<TR>. x* e' C9 {5 M( J0 w
<TD>  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+EGAVGA
. x4 U- |) `. L: F' o4 o) e1 y; B  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+TRIP
$ M0 V$ T+ E. I) e) C! O" }  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+LITT
& P0 s: M( |0 s  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+SANS
& E3 O5 `7 h2 u0 A2 Z( o  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+GOTH</TD></TR></TABLE>/ c5 O' a! M! q% @' a1 i
<>  也可以使用TLIB、PRJ程序代替TLINK。  O) q2 G2 w3 x, l! I
) {9 [. w* }1 v3 ^8 k' X0 n
  3.在程序中调用initgraph()函数前,应加上如下语句:
3 M9 d- k" p. f( i  registerbgidriver(EGAVGA-driver);% E3 a+ W8 A4 P! i# U" x" j
8 g3 E. g# _8 Y  l8 T) A
  它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在装入字体文件之前要加上如下语句:
9 d4 m8 r3 n) q  registerbgifont(字体文件名);
) Z/ c$ x- P$ J% S) ]1 s9 g4 I& X, l& |) s7 R
  4.通过上述处理后,编译连接后的执行程序就可以在任何目录下运行了。这时,将屏幕初始化为图形模式的函数可改写为:& y$ C+ T6 p$ t* c% q
</P>5 U/ p, a# M' l9 F& ^
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>: C- z) S3 x, e7 j( @- n1 m5 _+ }
5 l4 X" R; n8 N+ _- Y+ I4 I
<TR>
: t4 l9 U; W0 C+ C9 R' |2 U& k<TD>  void InitGra(void)8 R1 V8 H1 Q4 c/ I
  {int GD=DETECT,GM;
. r1 e6 P( t0 n2 a  registerbgidriver(EGAVGA_driver);
9 z  M: ?  P; n3 @. C3 b: q  registerbgifont(triplex_font);1 ~0 B5 m  B' Q6 r6 Y
  registerbgifont(small_font);
9 s1 m* W. M- }" P, @- E  S2 e  registerbgifont(sansserif_font);0 T5 x2 |5 k; x9 z. u& B
  registerbgifont(gothic_font);
! l3 @! a: |: W9 l( \  [  initgraph(&amp;GD,&amp;GM,"");
' {9 ]; L% @" l- y% }7 A) W  N  }</TD></TR></TABLE>
8 L6 y% c. `4 {" W<>  按照以上步骤,就能实现图形程序的独立运行</P>




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