DEBUG笔记一

来源:互联网 发布:淘宝网民族风连衣裙 编辑:程序博客网 时间:2024/05/21 07:04

        刚开始研究VC,问题真多啊!

       为了解决游戏窗口显示时闪烁的问题,今天学会了一个叫做“双缓冲”的技术。可是使用时出现了让我相当郁闷的错误。

HDC         hMemDC=CreateCompatibleDC(hDC);

      

HBITMAP      hbmMem=CreateCompatibleBitmap(hMemDC,

        GameEngine::GetGameEngine()->GetWidth(),

        GameEngine::GetGameEngine()->GetHeight());

SelectObject(hMemDC,hbmMem);

/****** 在兼容的上下文hMemDC中绘图*****/

………………………

   BitBlt(hDC,0,0,GameEngine::GetGameEngine()->GetWidth(),GameEngine::GetGameEngine()->GetHeight(),hMemDC,0,0,SRCCOPY);

………………………………..

 

       我以为这样写没错,可最终显示的结果32位的彩色位图全变成了黑白单色位图。仔细看MSDN,查资料,debug…….

       就在我郁闷了几个小时后,随意做了一点改动,意外的解决了。

       我把兼容位图的创建改成:

HBITMAP      hbmMem=CreateCompatibleBitmap(hDC,

GameEngine::GetGameEngine()->GetWidth(),

GameEngine::GetGameEngine()->GetHeight());

       虽然问题解决了,可我还是不知道为什么在hMemDC上绘图要创建与hDC兼容的位图,可能是显示机制的问题吧?这个就深了!