在MINIGUI中用双缓冲解决刷屏的办法?
在MINIGUI中用双缓冲解决刷屏的办法?
在解决刷屏问题的时候,可以采用 MSG_EARSEBKGND: ,现在想用双缓冲的办法来解决这个问题,代码如下:
[code]
case MSG_TIMER:
InvalidateRect (hWnd, &rc, TRUE);
break;
case MSG_PAINT:
hdcMem = CreateCompatibleDC (HDC_SCREEN);
LoadBitmapFromFile (hdcMem, &s_bmp, bmpno);
FillBoxWithBitmap (hdcMem, 0, 0, 512, 480, &s_bmp);
UnloadBitmap (&s_bmp);
hdc = BeginPaint (hWnd);
BitBlt (hdcMem, 0, 0, 512, 480, hdc, 0, 0, 0);
DeleteCompatibleDC (hdcMem);
EndPaint (hWnd, hdc);
[/code]
这个代码能编译运行,但是没有解决刷屏的问题,还是出现严重的闪烁,不知道问题出在什么地方,希望大虾们帮忙,谢谢!
------解决方案-------------------- hdc = BeginPaint (hWnd);
hdcMem = CreateCompatibleDC (hdc );
LoadBitmapFromFile (hdcMem, &s_bmp, bmpno);
FillBoxWithBitmap (hdcMem, 0, 0, 512, 480, &s_bmp);
UnloadBitmap (&s_bmp);
BitBlt (hdcMem, 0, 0, 512, 480, hdc, 0, 0, 0);
DeleteCompatibleDC (hdcMem);
EndPaint (hWnd, hdc);
兼容dc的建立不对,应该用beginpaint生成的dc来建立兼容dc,用HDC_SCREEN建立的没有意义。