多文档程序在cview类ondraw函数里传参绘图遇到的怪现象,
void CLCADView::OnDraw(CDC* pDC){
CLCADDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(&rect);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap bitmap, *pOldBitmap2;
bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
pOldBitmap2 = MemDC.SelectObject(&bitmap);
COLORREF m_bkColor;
m_bkColor = RGB(0x00,0xFF,0x00);
MemDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), m_bkColor);
int y=GetDocument()->h;//GetDocument()->h在文档类里打开文件获得高度
int x=GetDocument()->w;//GetDocument()->w在文档类里打开文件获得宽度
int u=y*x;
int v=0;
int w=0;
unsigned char dac[256][3];
memcpy(dac,GetDocument()->DAC,sizeof(GetDocument()->DAC));//文档类里读取的颜色表数组拷贝到dac数组中
unsigned char *pdata=GetDocument()->pBmpBuf;//文档类中的pBmpBuf数据块指针与pdata指针联系起来
/////////////////////////////////////////////////////////////////////////////
//将高度,宽度,数据块,传参后打开文件后只显示绘的背景色,bmp不显示到客户区,如果打开两次文件bmp图又能绘到客户区
for(int i=0;i<y;i++)
{
for (int j=0;j<x;j++)
{
if(v<u)
{
w=pdata[v++];
int r=dac[w][0];int g=dac[w][1];int b=dac[w][2];
MemDC.SetPixel(j,i,RGB(r,g,b));
}
}
}
/////////////////////////////////////////////////////////////////////////////////
//上面用for循环那段代码改成下面注释区代码,在打开文件后生成窗口,背景和画的点能够正常显示到客户区,求给位老师解决帮小徒解决下问题,先谢谢了!
/*
for(int i=0;i<10;i++)
{
for (int j=0;j<10;j++)
{
MemDC.SetPixel(j,i,RGB(20,20,100));
}
}
*/
//MemDC.SelectObject(bitmap);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
ReleaseDC(pDC);
}
[ 本帖最后由 lanriver 于 2012-9-12 00:41 编辑 ]