在使用DosBox的Windows 7 64位操作系统上的Turbo C ++中以高分辨率模式使用IBM 3514 Borland图形界面驱动程序

时间:2011-10-18 14:03:55

标签: graphics driver windows-7-x64 turbo-c++ dosbox

我在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种颜色。

2 个答案:

答案 0 :(得分:4)

在Windows下,您的图形适配器已虚拟化。您无法直接访问它并使用其特定功能(除非您使用DirectX / OpenGL /其他奇怪的方法)。 DOSBox为它运行的程序模拟一些“历史”图形适配器(准确地说:Tandy / Hercules / CGA / EGA / VGA / VESA)。您必须使用TC的VESA 2.0驱动程序(或通常是VESA驱动程序)。

答案 1 :(得分:1)

驱动程序的正确名称是ibm8514.bgi - 不是&#34; 3514&#34;而不是&#34; imb&#34;或者。但就像我之前的发言人所说的那样,你更好地使用另一个驱最好的选择是使用Turbo resp的egavga.bgi驱动程序。 Borland C ++或Turbo Pascal包。然后你应该成功编译它们 期待您需要此驱动程序的特殊功能。然后,如果需要,你必须检查他们的努力。我认为egavga.bgi,vesa或直接切换到grafic模式与一些特殊的例程来制作grafic应该在DOSBox,EmuDOS或所有32位版本的Windows(如Windows XP等)中工作。 Guenni60