实际绘图发生在我的本机代码中的屏幕外目标上,每次刷新都会调用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;
这可能会解决您的问题。