天天看點

MFC雙緩沖 防止閃屏

好久沒有寫mfc的東西了。今天幫别人看改個閃屏的問題。

弄了挺久的。。寫在把解決的方法寫出來。

void CWanggeView::OnDraw(CDC* pDC) { CWanggeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; GetClientRect(&rect); //建立與螢幕裝置描述表(前端緩沖區)相容的記憶體裝置描述表句柄(後備緩沖區) MemDC.CreateCompatibleDC(NULL); //這時還不能繪圖,因為沒有位圖的裝置描述表是不能繪圖的 //下面建立一個與螢幕裝置描述表(或者記憶體裝置描述表)相容的位圖 MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); //将位圖選入到記憶體裝置描述表 //隻有選入了位圖的裝置描述表才有地方繪圖,畫到指定的位圖上 CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); // //繪圖什麼的就寫在這裡。。。 // //将後備緩沖區中的圖形拷貝到前端緩沖區 pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); //繪圖完成後的清理 MemBitmap.DeleteObject(); MemDC.DeleteDC(); }