现在的位置: 首页 > 综合 > 正文

DEBUG笔记一

2013年10月10日 ⁄ 综合 ⁄ 共 779字 ⁄ 字号 评论关闭

        刚开始研究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兼容的位图,可能是显示机制的问题吧?这个就深了!

抱歉!评论已关闭.