你能给出这个示例代码实现双缓冲的最简单方法(防止闪烁):
HWND hwnd = FindWindow(0, "Untitled - Notepad");
HDC hDC_Desktop = GetDC(hwnd);
...
while( )
{
RECT rect = { 10, 10, 10 + 50, 10 + 50 };
FillRect(hDC_Desktop, &rect, ColorBrush);
InvalidateRect (hwnd, NULL, TRUE);
}
答案 0 :(得分:1)
它“闪烁”的原因是因为目标窗口失效并且正在重绘。因为它不是你的窗口 - 你不一定能控制它。
如果这是你的拥有窗口,有一个简单的策略可以加快绘图速度并减少闪烁:使用Memory DC绘制并捕获WM_ERASEBKGND以抑制背景重绘。
深入解释和修复策略(在应用程序窗口中):http://www.catch22.net/tuts/flicker-free-drawing
如果您的目的是在另一个应用程序上绘图,我是否可以建议在该应用程序之上创建一个窗口并使用该窗口。