本文介绍了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避免闪烁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 21:26