读书人

在MINIGUI中用双缓冲解决刷屏的办法?

发布时间: 2012-03-09 16:54:57 作者: rapoo

在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建立的没有意义。

读书人网 >UNIXLINUX

热点推荐