1. 程式人生 > >PluginWindowlessWin

PluginWindowlessWin

證明 otto cdi etc gin bits 而不是 left 插件

實際繪圖發生在我的本機代碼中的屏幕外目標上,每次刷新都會調用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);
}

======================================================================

事實證明,修復此問題是使用RefreshEvent中的邊界而不是getWindowPosition。

FB::Rect r = dynamic_cast<FB::RefreshEvent*>(evt)->bounds;

這可能會解決您的問題。

PluginWindowlessWin