为什么图功能函数 Graph.h在VC6.0中不能用?
为什么图功能函数 Graph.h在VC6.0中不能用?
望哪位高手能予以赐教。
不胜感激!!!!
以下是一个时钟的程序:
#include<graph.h>
#include<math.h>
#include<dos.h>
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init()
{int i,l,x1,x2,y1,y2;
setbkcolor(1);
circle(300,240,200);
circle(300,240,205);
circle(300,240,5);
for(i=0;i<60;i++)
{if(i%5==0) l=15;
else l=5;
x1=200*cos(i*6*pi/180)+300;
y1=200*sin(i*6*pi/180)+240;
x2=(200-l)*cos(i*6*pi/180)+300;
y2=(200-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x,y;
int gd=VGA,gm=2;
unsigned char h,m,s;
struct time t[1];
initgraph(&gd,&gm,"d:\\tc");
init();
setwritemode(1);
gettime(t);
h=t[0].ti_hour;
m=t[0].ti_min;
s=t[0].ti_sec;
setcolor(7);
d(150,h,30);
setcolor(14);
d(170,m,6);
setcolor(4);
d(190,s,6);
while(!kbhit())
{while(t[0].ti_sec==s)
gettime(t);
sound(400);
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(190,s,6);
s=t[0].ti_sec;
d(190,s,6);
if (t[0].ti_min!=m)
{
setcolor(14);
d(170,m,6);
m=t[0].ti_min;
d(170,m,6);
}
if (t[0].ti_hour!=h)
{ setcolor(7);
d(150,h,30);
h=t[0].ti_hour;
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
}
getch();
closegraph();
}.
[解决办法]
两种方法,要么改代码,要么换成TC的编译器,才能运行你的程序...
[解决办法]
你首先要弄明白.h文件到底是做什么用的。
简而言之,.h文件只是告诉你怎么用某个.dll或者.lib库的索引和手册而已。
参照.h文件,你知道了某个.dll或者.lib提供哪些功能,以及如何使用它们。
这里的.dll或者.lib如果能明白当然最好,如果暂时还不太明白的话,你就当作是某个组件,为你实现了某个功能,如果你要使用这些功能必须用到它们,而用到它们之前必先有.h文件了解它们能做什么,以及如何去用他们。
楼上的说的大部分是正确的,只是不能说是由于编译器不同。因为即使编译器不同,都是应该能编译代码的。所以准确的说应该是与之配套提供的开发包不同,也就是上面提到的提供的.dll和.lib不同。
有一些内容不管哪个厂家提供的开发包都支持,他们有着同样的.h文件,那些就是大家公认的标准,或者即将成为标准的东西。但是有一些内容可能由于大家的理解不一样或者实现的方式不一样所以提供的开发包不同,自然对应功能的.h文件也就不同。
TC是很老的IDE,当时好像还是DOS操作系统,而且是Borland公司开发的,所以在实现绘图功能方面提供的.h是这个,可是VC是在windows出来以后才诞生的,图形功能主要是在win32上面的,所以自然要用到win32 API去实现。
因此借用楼上某位大侠的话,解决办法要么换成TC,这样里面会附带上所需要的对应功能模块和graph.h,让你能够编译通过运行。要么就换成VC,但是自己把里面涉及到调用graph.h里面函数的部分全部用win32 API替换。
别无他法。
[解决办法]
用tc编译器吧。太古老的东西了。
或者重写代码。