我使用Firebreath創建一個跨瀏覽器插件來執行3D圖形渲染。StretchDIBits在IE8上win8上firebreath無窗口窗口的問題
實際繪製發生在我的本地代碼在屏幕外的目標,每一次刷新將調用爲myplugin :: onWindowRefresh,這將StretchBlt以插件的窗戶窗口,如下面的代碼,
FB::PluginWindowlessWin *win = dynamic_cast<FB::PluginWindowlessWin*>(pluginWindow);
dstHdc = win->getHDC();
if(srcDib && dstHdc)
{
FB::Rect r = win->getWindowPosition();
int dstWidth = r.right - r.left;
int dstHeight = r.bottom - r.top;
SetStretchBltMode(dstHdc, HALFTONE);
StretchDIBits(dstHdc, r.left, r.top, dstWidth, dstHeight, 0, 0, srcWidth, srcHeight,
srcDib->GetBits(), srcDib->GetBitmapInfo(), DIB_RGB_COLORS, SRCCOPY);
}
一切運行良好,直到我在IE10的win8上試用我的插件。問題是
窗口的位置從窗戶的窗口得到的是不窗口位置任何更多的,它像插件位置,即目的窗戶插件的HDC是在插件的空間座標,但在其他情況下, (IE9,Chrome,Firefox等),它是窗口空間座標。
那麼,在win8或firebreath問題上的IE10有問題嗎? 任何幫助/建議表示讚賞。
更新: 這個問題只發生在win10上的IE10上。我只是在win7上安裝IE10,而我的插件運行良好。
我也有問題,只是供參考; FireBreath完全可能做錯了事,但不幸的是我不知道它是什麼。這是我最終需要修復的事情,但是我們沒有足夠的客戶在win8上使用我們的插件,因此我花了很多時間來弄清楚發生了什麼。它比activebreath更像是一個activex問題,儘管 – taxilian
這個問題也影響了Windows 8和Window 10上的IE11。IE 11 Windows 7不受此問題的影響。 – splrs