2012-04-10 84 views
1

我正在WINE中运行VB6应用程序,并且程序的OpenGL部分不起作用。它使用PFD_DRAW_TO_BITMAP。 PFD_DRAW_TO_WINDOW格式似乎工作。SetPixelFormat返回0,但没有设置错误?

我已经列举了所有的像素格式(大约有256个),其中一些匹配我的要求。 ChoosePixelFormat似乎返回一个正确的格式(在这种情况下pixelFormat 6),但是当我将此值传递给SetPixelFormat时,它返回0.我查看了文档,它说检查GetLastError()以获取更多信息,但是当我调用它时,它返回0格式为空的错误消息。

有人知道无论如何要弄清楚为什么SetPixelFormat会失败吗?我已经做了一些阅读,听起来像DRAW_TO_BITMAP自2009年5月以来已实施。

我知道DRAW_TO_BITMAP没有硬件加速。这是完全可以接受的。这个应用程序在Windows中工作正常, - 我只需要弄清楚为什么支持的像素格式似乎不被识别。

我在其包管理器中运行Ubuntu,WINE的最新版本 - 在Quadro上如果有问题(不确定Wine是否尝试使用底层图形卡或者是否虚拟化所有软件的像素格式渲染)

+0

您是否在真正的Windows安装上测试过它,看它是否是Wine漏洞? – Deanna 2012-04-11 15:23:06

+0

是的,它适用于我的Windows安装。适用于除3之外的每次安装。 – 2012-04-25 20:51:45

回答

0

我不知道为什么SetPixelFormat只会在WINE上失败,但无论如何从VB6代码手动调用GetLastError都是不正确的。 VB在幕后制作自己的DLL调用。这些将(通常)成功,重置由GetLastError看到的错误代码并使其无用VB代码。

取而代之,VB在每次用户启动的DLL调用之后立即调用GetLastError本身。它可以保存该值并将其作为属性Err.LastDllError提供。用它来找出真正的错误代码。

相关问题