2012-04-10 31 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提供。用它來找出真正的錯誤代碼。

相關問題