本文介绍了901207-通过使用memDC避免闪烁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨以下代码未在视图中绘制任何内容:void Ct2View :: OnDraw(CDC * pDC) { CRect r; GetClientRect(r); CBitmap bmp; bmp.CreateCompatibleBitmap(pDC,r.right,r.bottom); CDC memDC; memDC.CreateCompatibleDC(pDC); memDC.SelectObject(& bmp); // 导致memDC获得与客户区相同的大小,而不是0x0 memDC.FillSolidRect(r,BLACK); for ( int j = 0 ; j< ; d_numRows; j ++) for ( int i = 0 ; i< ; d_numCols; i ++) pr_drawItem(& memDC,i,j); pr_drawSelRect(& memDC); pDC-> BitBlt( 0 , 0 ,r.right,r.left,& memDC, 0 , 0 ,SRCCOPY); }
为什么?!
解决方案
hithe following code draws nothing in the view:
void Ct2View::OnDraw(CDC* pDC) { CRect r; GetClientRect(r); CBitmap bmp; bmp.CreateCompatibleBitmap(pDC, r.right, r.bottom); CDC memDC; memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&bmp); // to cause memDC to get the same size as the client area instead of 0x0 memDC.FillSolidRect(r, BLACK); for (int j=0; j<d_numRows; j++) for (int i=0; i<d_numCols; i++) pr_drawItem(&memDC, i, j); pr_drawSelRect(&memDC); pDC->BitBlt(0, 0, r.right, r.left, &memDC, 0, 0, SRCCOPY); }
why?!
解决方案
这篇关于901207-通过使用memDC避免闪烁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!