当前位置: 技术问答>linux和unix
在MINIGUI中用双缓冲解决刷屏的办法?
来源: 互联网 发布时间:2016-02-29
本文导语: 在MINIGUI中用双缓冲解决刷屏的办法? 在解决刷屏问题的时候,可以采用 MSG_EARSEBKGND: ,现在想用双缓冲的办法来解决这个问题,代码如下: [code] case MSG_TIMER: InvalidateRect (hWnd, &rc,...
在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]
这个代码能编译运行,但是没有解决刷屏的问题,还是出现严重的闪烁,不知道问题出在什么地方,希望大虾们帮忙,谢谢!
在解决刷屏问题的时候,可以采用 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建立的没有意义。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。