使用IBM 3514 Borland图形接口驱动程序在高分辨率模式下Turbo c++在Windows 7 64位操作系
Using the IBM 3514 Borland Graphics Interface driver in High resolution mode in Turbo C++ on Windows 7 64 bit OS using DosBox
我在Windows 7 64位上使用DosBox在Turbo c++中运行图形程序。现在,我想在高分辨率模式(IBM3514HI
)下使用IBM3514
图形驱动程序。因此,我编写了以下基本程序来测试它:
#include <graphics.h>
#include <iostream.h>
void main() {
int gd = IBM3514, gm = IBM3514HI, e;
initgraph(&gd, &gm, "C:\TC\BGI");
if (e = graphresult()) {
cout << grapherrormsg(e);
}
cleardevice();
rectangle(100, 100, 300, 300);
cin.get();
closegraph();
restorecrtmode();
}
现在,程序编译并运行没有任何错误。然而,initgraph
函数调用不会初始化图形模式。graphresult
返回值为0
。因此,没有发生错误。然而,该程序仍然在文本模式下运行。闪烁的下划线是可见的,并且矩形不被绘制。
我检查了我的C:TCBGI
文件夹和IMB3514.BGI
文件存在。因此我假设它确实加载了图形驱动程序。然而,我不明白为什么程序不能在图形模式下执行,甚至抛出一个错误。但是,如果我使用默认设置,它就可以完美地工作:int gd = DETECT, gm;
如果你能解释一下为什么我的程序不能工作,我将不胜感激。请尝试提供解决此问题的方法。我真的想用256
的颜色在1024x768
的屏幕上画画。
在Windows下,您的图形适配器是虚拟化的。你不能直接访问它并使用它的特定功能(除非你使用DirectX/OpenGL/其他奇怪的方法)。DOSBox为它运行的程序模拟了一些"历史"图形适配器(准确地说:Tandy/Hercules/CGA/EGA/VGA/VESA)。您必须使用TC的VESA 2.0驱动程序(或一般的VESA驱动程序)。
正确的驱动程序名称是ibm8514。华大-不是"3514";而不是"imb"左右。但就像我之前的演讲者说的,你最好换一个司机。最好的选择是使用egavga。涡轮增压的驱动程序。Borland c++或Turbo Pascal包。然后你应该编译成功。
期望您需要这个驱动程序的特殊功能。然后,如果需要的话,您必须检查这些努力。我想是egavga。bgi, vesa或直接切换到图形模式用一些特殊的例程使图形应该在DOSBox, EmuDOS或所有32位版本的Windows如Windows XP等下工作。
试试下面的代码:
int gd = 6, gm = 0, e;
(两个变量都是integer,而不是string)
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- Turbo C++ cin() 不能与 gets() 一起使用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 如何从文件中检索链表(在 Turbo C++ 中)
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- 在Visual Studio C++2017中链接libjpeg-turbo要包含哪些文件
- 在turbo c++中编译.不在视觉工作室
- 如何在 turbo C++ 中增加类数组的大小?
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- 在 turbo c++ 中使用 TCC 从 cmd 编译C++程序
- 如何在 Turbo C++ 3.2 编译器中使用 long long 关键字
- Turbo 如何在 Tubo C++ 中制作一个可变大小的数组
- 为什么一个简单的"Hello World"风格的程序不能用Turbo C++编译?
- 从Turbo转移到Code :: Blocks
- strcpy() 和 strcat() 在 Turbo C++ 中无法正常工作(从字符串 litteral 初始化数组时
- 无法从 turbo c 程序中的文件检索文件数据
- Turbo我试图制作C TIC TAC TOE游戏,但没有获得正确的输出
- COUT不适用于我的其他Turbo C 合并
- 标头文件未在Linux上链接到Turbo C 中
- 检查 int 的输入,如果是字符,请再次请求输入(Turbo C++)