将tc下的程序移植到vc中.doc_第1页
将tc下的程序移植到vc中.doc_第2页
将tc下的程序移植到vc中.doc_第3页
将tc下的程序移植到vc中.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

窗体顶端Turbo C(简称tc)是 dos 时代经典的编译器,学习编程时,有很多图形类和游戏类的程序都是用 tc 编写的。由于 c 语言标准的不完善,这些程序大多数都不能直接在 vc 里面编译。本文就讲解怎样将 tc 程序移植到 vc 下。注:本文以VC 6.0 为范例(高版本的 vc 大同小异),同时请安装最新版本的 EasyX 图形库。移植前请注意:1. 确保 tc 代码可以正确运行。 2. 将 tc 代码复制粘贴到 vc 里面。注意,vc 里面代码文件的扩展名要用 .cpp,不能用 .c。 3. 以下解决办法不分先后顺序,哪条对应就按照哪条修改。 4. 如果没找到对应的解决办法,可以暂时跳过,先改后面的。可能修改了第 3 条错误,第 2 条错误也就没有了。 5. 可能解决一个问题后,会出现 10 个新问题,这不要紧。细心、耐心一些,一个一个问题慢慢处理,并不复杂。 以下正文。错误提示:fatal error C1083: Cannot open include file: bios.h: No such file or directory解决办法:删掉 #include 错误提示:fatal error C1083: Cannot open include file: dos.h: No such file or directory解决办法:删掉 #include 错误提示:error C2065: bioskey : undeclared identifier解决办法:根据 bioskey 的参数,适当的用 getch / kbhit 代替。具体请参考:/skills/View.aspx?id=77错误提示:error C2065: getch : undeclared identifier解决办法:由于 tc2.0 对于一些常用函数可以不引用头文件,这是不标准的写法,在之后的编译器都会报错。请增加相关的头文件引用:#include 错误提示:error C2065: registerbgidriver : undeclared identifier解决办法:删除错误行:registerbgidriver(xxx);错误提示:error C2065: sleep : undeclared identifier解决办法:改用 Sleep,并将参数扩大 1000 倍。例如,原来是 sleep(3);,修改为 Sleep(3000);错误提示:error C2065: delay : undeclared identifier解决办法:将 delay 修改为 Sleep 即可。错误提示:error C2065: EGA : undeclared identifier或:error C2065: EGAHI : undeclared identifier解决办法:通常在含有该错误的代码行会有类似定义:int gdriver = EGA, gmode = EGAHI;将这行代码删掉即可。这两个变量在之后会这样使用:initgraph(&gdriver, &gmode, );将这行代码修改为initgraph(640, 480);问题即可解决。错误提示:error C2065: getmaxx : undeclared identifier解决办法:将 getmaxx() 修改为 getwidth();错误提示:error C2065: getmaxy : undeclared identifier解决办法:将 getmaxy() 修改为 getheight();错误提示:error C2065: graphresult : undeclared identifier解决办法:将 graphresult(); 用数字 0 替换。错误提示:error C2065: grOk : undeclared identifier解决办法:将 grOk 用数字 0 替换。错误提示:error C2065: grapherrormsg : undeclared identifier解决办法:将 grapherrormsg(xxx) 用一对半角空双引号 替换。错误提示:error C2065: _AX : undeclared identifier (可能是 _AH、_AL、_BX、_CX 等寄存器)错误提示:error C2065: geninterrupt : undeclared identifier解决办法:前面两个错误提示通常会一起发生,这些代码是调用中断时使用的,比如在 TC 里面调用鼠标的代码。所以,具体解决办法要根据调用什么中断来解决,需要查中断手册。例如以下的 TC 代码:void GetMousePos() _AX=0x33; geninterrupt(0x33); MouseX=_CX; MouseY=_DX;查询中断手册后可以得知,该功能是用来获取鼠标的当前坐标。所以,这个 GetMousePos() 函数就要相应的修改成 VC 版本,例如:void GetMousePos() HWND hwnd = GetHWnd(); POINT point; GetCursorPos(&point); ScreenToClient(hwnd, &point); MouseX = point.x; MouseY = point.y;错误提示:error C2065: settextstyle : undeclared identifier解决办法:settextstyle 是 tc 下设置字体的函数,功能很简单,第一个参数设置字形(0-4 共 5 种),第二个参数设置文字输出方向(0、1 分别表示横、竖),第三个参数设置文字大小(设置为 n 表示高度为 8 * n)。在 easyx 下可以通过 setfont 实现更丰富的字体设置,详见帮助中 setfont 函数的说明。错误提示:error C2660: ellipse : function does not take 6 parameters解决办法:tc 里面的 ellipse() 函数用来画椭圆弧,在 EasyX 里面改用 arc() 函数来完成。除了需要将函数名由 ellipse 修改为 arc 外,还需要调整对应的参数。请参考 EasyX 帮助文档获取函数原型并作适当调整。例如,tc 中代码:ellipse(x, y, sa, ea, xr, yr);在 vc 中修改为:arc(x - xr, y - yr, x + xr, y + yr, sa * PI / 180, ea * PI / 180);错误提示:error C2660: arc : function does not take 5 parameters修改方法:tc 里面的 arc() 函数用来画圆弧,和 EasyX 里面 arc() 函数的参数略有不同,需要调整对应的参数。请参考 EasyX 帮助文档获取函数原型并作适当调整。例如,tc 中代码:arc(x, y, r, sa, ea);在 vc 中修改为:arc(x - r, y - r, x + r, y + r, sa * PI / 180, ea * PI / 180);错误提示:error C2065: settextjustify : undeclared identifier解决办法:删除 settextjustify(xxx) 语句。该函数目前在 vc 下没有特别理想的替换方案。该函数目的是调整 outtextxy 输出字符串的位置,删除后,后面的文字输出位置会有偏移(不会影响程序执行流程),因此还需要根据情况调整后面的文字输出语句的坐标,或者替换为 drawtext 函数等。如果编译没有错误了,但是程序还是不能运行,就需要修改一些运行时导致问题的地方:1. setcolor 等颜色相关。例如,setcolor(4);,在 TC 下设置为 4 号调色板颜色,默认是红色,但在 EasyX 下,可以使用 24 位真彩色,每个颜色分量都是 0255,那么 4 号颜色只表示很暗的红色,肉眼几乎看不到。因此,setcolor(4) 可以修改为 setcolor(RED),等等。其他涉及到颜色的语句也要这么修改。2. setfillstyleEasyX 的 setfillstyle 和 tc 下的格式不同,需要做相应调整。tc 下的 setfillstyle 语句格式为:void setfillstyle(int pattern, int color);常见的 pattern 为 1 或 SOLID_FILL,表示固实填充。而 EasyX 的 setfillst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论