首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

SDK双缓存防止图片闪烁,但图片显示不出来,哪位高手帮小弟我看一下咋回事.

2012-02-19 
SDK双缓存防止图片闪烁,,但图片显示不出来,谁帮我看一下怎么回事...C/C++ code//

SDK双缓存防止图片闪烁,,但图片显示不出来,谁帮我看一下怎么回事...

C/C++ code
//=============================装载小方块=================================//HBITMAP m_hBmpFangKuai = (HBITMAP)LoadImage(NULL,_T("res\\FangKuai.bmp"),IMAGE_BITMAP,BLEN,BLEN,LR_LOADFROMFILE);HDC m_HBmpDC = ::GetDC(hwnd);//得到客户区DC句柄        HDC m_HMemBmpDC = ::CreateCompatibleDC(m_HBmpDC);//建立内存兼容DC    BITMAP bmpInfo;//定义bmp结构::GetObject(m_hBmpFangKuai, sizeof(BITMAPINFO), &bmpInfo);//获得图片信息到bmp结构中;HBITMAP HOldDC = (HBITMAP)::SelectObject(m_HMemBmpDC, m_hBmpFangKuai);//将BMP选入到内存DC中并返回老位图//=============双缓冲开始=======================HBITMAP BkMap = CreateCompatibleBitmap(m_HBmpDC,GLONG,GWIDE);HDC BkDC = CreateCompatibleDC(m_HBmpDC);HBITMAP HOldBkDC = (HBITMAP)SelectObject(BkDC , BkMap);BitBlt(BkDC , 0 , 0 ,GLONG , GWIDE , m_HMemBmpDC,0,0,SRCCOPY);::SelectObject(BkDC, HOldBkDC);//==============================================::BitBlt(m_HBmpDC , BLEN*j , BLEN*i ,BLEN , BLEN , BkDC,0,0,SRCCOPY);//将内存DC中的内容拷贝到当前窗口DC中,并显示::SelectObject(m_HMemBmpDC, HOldDC);//选回老位图DeleteObject(m_hBmpFangKuai);DeleteDC(hdc);DeleteDC(m_HBmpDC);DeleteDC(m_HMemBmpDC);


[解决办法]
//=============双缓冲开始=======================
HBITMAP BkMap = CreateCompatibleBitmap(m_HBmpDC,GLONG,GWIDE);
HDC BkDC = CreateCompatibleDC(m_HBmpDC);
HBITMAP HOldBkDC = (HBITMAP)SelectObject(BkDC , BkMap);
BitBlt(BkDC , 0 , 0 ,GLONG , GWIDE , m_HMemBmpDC,0,0,SRCCOPY);
::SelectObject(BkDC, HOldBkDC);

//==============================================

上面这部分不要


::BitBlt(m_HBmpDC , BLEN*j , BLEN*i ,BLEN , BLEN , BkDC,0,0,SRCCOPY);//
改为:
::BitBlt(m_HBmpDC , BLEN*j , BLEN*i ,BLEN , BLEN , m_HMemBmpDC,0,0,SRCCOPY);//

热点排行