【问题标题】:Using the IBM 3514 Borland Graphics Interface driver in High resolution mode in Turbo C++ on Windows 7 64 bit OS using DosBox在使用 DosBox 的 Windows 7 64 位操作系统上以高分辨率模式在 Turbo C++ 中使用 IBM 3514 Borland 图形接口驱动程序
【发布时间】:2011-12-10 03:29:38
【问题描述】:

我在 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;

任何关于我的程序为什么不起作用的解释将不胜感激。请尝试提供解决此问题的方法。我真的很想用256 颜色在1024x768 屏幕上绘图。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      驱动程序的正确名称是 ibm8514.bgi - 不是“3514”,也不是“imb”左右。但就像我之前的演讲者所说,你最好使用另一个驱动程序。最好的选择是使用 Turbo 的 egavga.bgi 驱动程序。 Borland C++ 或 Turbo Pascal 包。那么你应该编译成功了。

      希望您需要此驱动程序的特殊功能。然后,如果需要,您必须检查他们的这项工作。我认为 egavga.bgi、vesa 或直接切换到图形模式并使用一些特殊的例程来制作图形应该可以在 DOSBox、EmuDOS 或 Windows XP 等所有 32 位版本的 Windows 中工作。

      【讨论】:

        【解决方案3】:

        试试这个代码:

        int gd = 6, gm = 0, e;
        

        (两个变量都是整数,而不是字符串)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多