TC2.0 在winxp下initgraph崩溃原因以及解决方法


   
  
  用rectangle()函数。
  你得TC放在自文件夹了。你放在根目录下。
  int gmode=0;
  initgraph(&gdriver,&gmode,"");
  另外, 使用图形函数时要确保有显示 
  器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。
  用TC写BGI图形编程的代码时,最容易出现 BGI Error 的问题,例如在屏幕上提示这样一行字: Graphics not initialized (use 'initgraph') 然后程序就退出了。在WIN98下这行字能够看到,但是在WIN2000或WINXP下就闪一下这行字(实际上这行字在WIN2K或XP下会显示出来的,只不过时间太短了你看不到罢了)直接退出了。这行字是什么意思呢?从字面上理解,就是没有initgraph啊?但是程序的代码里面确实是写了initgraph啊?这样的出错提示,的确让很多编程者摸不着头脑。实际上,它的问题并不出在没有使用initgraph上,是你没有使用正确的路径。
  TC BGI提供了一个graphics.h,一个graphics.lib,一堆.bgi文件和一个bgiobj.exe。就当前问题来说,是.bgi导致了你的错误出现。例如最常见的
  int gd=VGA,gm=VGAHI;
  initgraph(&gd,&gm,"c:\tc20");
  来说,它的意思是initgraph使用gd为bgi驱动包,该驱动包里使用gm的屏幕模式初始化,最后一个参数就是该bgi驱动包的位置。例如上面的代码,就是说使用VGA模式(该模式驱动包含于egavga.bgi),使用其中的VGAHI方式(640*480 16 color)初始化屏幕,该驱动包位于"c:\tc20"目录下。你会问如果egavga.bgi不在"c:\tc20"下呢?那么 Graphics not initialized (use 'initgraph') 的问题就出现啦!
  但是指定bgi路径总不太好,不可能每个人的电脑上都在"c:\tc20"下有你需要的bgi文件。把bgi文件拷贝到你指定的路径如"c:\tc20"下也显得太麻烦。有没有好的解决方法呢?有,下面就是两种通常的解决方法:
  方法一:
  使用相对路径。相对路径你也许不知道,在次也不必来龙去脉把相对路径的使用说得特别清楚。简单地说,就是initgraph的最后一个字符串使用空"",然后生成的EXE,将自动在同级目录下找对应的bgi来运行。就上一个程序打个比方,把它最后一个字符串写成空串"",如:
  int gd=VGA,gm=VGAHI;
  initgraph(&gd,&gm,"");
  这样一来,只要程序目录下有egavga.bgi,就可以运行。如果你是在c:\tc20下的TC集成环境里运行的,那么只需要把egavga.bgi拷贝到c:\tc20下即可。如果你又把你所生成的EXE文件拷贝到桌面上,也只需要把egavga.bgi拷贝到桌面上你的程序即可运行啦。总之一句话:使用这种方法,须保证你EXE使用的bgi文件与你生成的EXE文件同目录。
  方法二:
  使用win-TC编译环境
  更方便的是,WIN-TC提供了模板的功能,其中的一个就是"BGI图形编程模板"。使用该模板生成的EXE,如果是用ega或vga模式的话,连.bgi文件都可以不需要来直接运行你的EXE啦,也就是说,如果你要把你的BGI图形EXE程序让别人去运行,即使是没有装TC的电脑上,也只需要一个EXE就能成功初始化BGI了,是不是很方便啊? 

猜你喜欢

转载自wanguangru.iteye.com/blog/1572133
tc