数学建模社区-数学中国

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

作者: lckboy    时间: 2004-6-4 11:54
标题: 让C/C++图形程序独立运行
<FONT size=3>  C/C++语言提供了十分丰富的图形函数,图形函数文件为Graphics.h,使用图形函数前须先将屏幕设置为图形模式,C/C++语言提供了下面的函数:9 A/ z5 A- i" M# d2 s
  void far initgraph(int far *GD,int far *GM,char *P);
3 [  ~$ ?0 H- f$ s+ k2 }4 [. p5 h: z# o+ }
  其中,GD和GM分别表示图形驱动程序和图形模式,P指图形驱动程序所在的目录路径。( `& p1 ~7 [/ X/ Y4 @
' T; |' A3 I$ u, z8 A9 L
  图形驱动程序由Borland公司(对于Turbo C和Borland C++)提供,同时C/C++语言还提供了退出图形状态的函数closegraph(),格式为:
2 b3 Q. N  [" d  M3 ]3 Z  k  void far closegraph(void);
" X/ A' ~9 b  o' ?* ?8 [; `. T* \7 Y( P  ^& E1 r+ K& ~; L% m8 W( |
  许你经常在用C/C++语言编写一些图形程序,但是总不能脱离C/C++语言环境独立运行,我们怎样来解决呢?下面是实现图形程序独立运行的具体步骤:0 U- @& m$ e8 R1 l

4 o1 M' u; y  D' C3 z, Q' w$ r  1.将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:( Z7 s6 q7 X3 D- Y9 |( P6 M7 s7 P
  C:\TC&gt;BGIOBJ EGAVGA& @3 J1 d; K6 j, f

: g$ _+ Z9 g$ U2 j/ Y  按同样的办法,将字体文件*.CHR转换成目标文件*.OBJ:1 Q/ H! Q% ~, |
</FONT>
  N2 _6 O3 H* H+ y' n1 h" {' O- x/ E0 q7 B7 n9 f
2 N- N% K( Q1 E  r  q8 `' \
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>, t0 {7 @4 q( {8 t2 d3 Y5 s, n2 ^

0 u2 J& m7 w- D" t0 ?9 G9 T, r<TR>  K5 j$ I5 U( |3 l* G2 f0 |
<TD>  C:\TC&gt;BGIOBJ TRIP
% U9 X' R6 y8 O  C:\TC&gt;BGIOBJ LITT$ M4 _8 M: P) ?5 z
  C:\TC&gt;BGIOBJ SANS
) z/ M+ V0 o2 i) T$ v8 e  C:\TC&gt;BGIOBJ GOTH</TD></TR></TABLE>
7 k$ n3 }4 u9 \$ K2 U<>  2.将上述建立的OBJ文件加入到GRAPHICS.LIB库文件中,具体方法如下:
# n2 J- E) w& P</P>4 J* P, C- t  T) K/ ]9 `; w
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>& T2 \% J* D& h, z1 r0 b; \; E
! J: ?4 v$ v( x; k8 k
<TR>
9 v3 R0 v6 U0 G% E<TD>  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+EGAVGA# H( U7 o8 u1 J+ e" S+ e# ]
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+TRIP. N, b; q" {- U8 t* W
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+LITT  t! S' p2 L: M( |$ O$ h
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+SANS% v9 k) w! D; v9 V8 A7 _0 N
  C:\TC&gt;TLINK C:\TC\LIB\GRAPHICS.LIB+GOTH</TD></TR></TABLE>
" x' z$ ^$ g5 q& A) ?0 _<>  也可以使用TLIB、PRJ程序代替TLINK。
. P. r6 W- N( k9 i0 x$ d4 H3 I  K' t+ n  `0 l- x% C
  3.在程序中调用initgraph()函数前,应加上如下语句:
  z  Z. b, {7 w9 Y  registerbgidriver(EGAVGA-driver);% R8 g% l+ Z% g/ q$ ?$ }

5 D* n8 e+ T" A1 g# s, n& Z  它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在装入字体文件之前要加上如下语句:% R- |& g  J7 m0 q5 d7 L4 h: C
  registerbgifont(字体文件名);
& P5 v; {( z; {, D; z9 N/ D  K+ {6 q) M
  4.通过上述处理后,编译连接后的执行程序就可以在任何目录下运行了。这时,将屏幕初始化为图形模式的函数可改写为:! i# m& L9 x0 d0 [5 Q$ o  L8 l
</P>$ q2 e: N- ]- n$ Z6 G  d2 i
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
( Y9 N8 R% `$ _# e0 l% {4 T7 o1 @0 |' R  H
<TR>
% }: M, |3 q  w* e<TD>  void InitGra(void)' {) P( o( f% k
  {int GD=DETECT,GM;7 [$ `/ J5 r* b
  registerbgidriver(EGAVGA_driver);0 Z: ?% W% i4 u% }, |3 j; `
  registerbgifont(triplex_font);
! x' T8 B7 o' H9 B1 @- G) V, {  registerbgifont(small_font);
1 Y9 U: b! G: @. b5 n$ w4 i  registerbgifont(sansserif_font);
2 [: g/ `4 @8 |' _+ A  registerbgifont(gothic_font);/ U0 B! l! B: Z0 U1 C4 M
  initgraph(&amp;GD,&amp;GM,"");  T! U: h9 s5 p
  }</TD></TR></TABLE>  j8 h8 q( w3 a2 b
<>  按照以上步骤,就能实现图形程序的独立运行</P>




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