我在 Windows 7 64 位上使用 DosBox 在 Turbo C++ 中运行图形程序。现在,我想在高分辨率模式下使用 IBM3514
图形驱动程序 (IBM3514HI
)。因此,我编写了以下基本程序来测试它:
#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:\TC\BGI
文件夹,IMB3514.BGI
文件存在。因此我假设它确实加载了图形驱动程序。然而,我无法弄清楚为什么程序不在图形模式下执行,甚至抛出错误。但是,如果我使用默认设置,它工作得很好:int gd = DETECT, gm;
如能解释我的程序为何无法运行,我们将不胜感激。请尝试解决此问题。我真的很想在 1024x768
屏幕上用 256
颜色绘图。
最佳答案
在 Windows 下,您的图形适配器是虚拟化的。你不能直接访问它并使用它的特定功能(除非你使用 DirectX/OpenGL/其他奇怪的方法)。 DOSBox 为它运行的程序模拟了一些“历史”图形适配器(准确地说:Tandy/Hercules/CGA/EGA/VGA/VESA)。您必须使用 TC 的 VESA 2.0 驱动程序(或通常的 VESA 驱动程序)。
关于c++ - 在 Windows 7 64 位操作系统上使用 DosBox 在 Turbo C++ 中以高分辨率模式使用 IBM 3514 Borland 图形接口(interface)驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808504/