Я использую Firebreath для создания кросс-браузерного плагина для рендеринга 3D-графики.
Фактическое рисование происходит в моем родном коде на внеэкранной цели, и каждый раз флеш вызывает 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);
}
Все работает хорошо, пока не попробую свой плагин на win8 в IE10. проблема в том
Положение окна, полученное из окна без окна, больше не является положением окна, оно ведет себя как позиция плагина, что означает, что место назначения HDC плагина без окна находится в координатах пространства плагина, но в другом случае (IE9, chrome, firefox и т. д.) это координаты оконного пространства.
Итак, это проблема с IE10 на win8 или проблема с огнедышащим? Любая помощь/предложения приветствуются.
Обновление: проблема возникает только в IE10 на win8. Я только что установил IE10 на win7, и мой плагин работает хорошо.