自己构造的一个类里:
CDC * CBitmapObject::ToBltDC(CDC *pDC, int pDC_Width, int pDC_Height)
{
BltTempBitmap.CreateCompatibleBitmap(pDC, pDC_Width, pDC_Height);
BltTempDC->CreateCompatibleDC(pDC);
pBltTempBitmap = BltTempDC->SelectObject(&BltTempBitmap);
BltTempDC->BitBlt(0,0,pDC_Width,pDC_Height,NULL,0,0,WHITENESS); return BltTempDC;//CDC *BltTempDC是私有成员
}在View里:
void CGDIMoveView::OnDraw(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
m_bitmapobj[0].LoadBitmap(IDB_BITMAP1);
CDC *p = m_bitmapobj[0].ToBltDC(pDC,rect.Width(),rect.Height());
pDC->BitBlt(0,0,rect.Width(),rect.Height(),p,0,0,SRCCOPY);
}结果内存错误。
发现是BltTempDC->CreateCompatibleDC(pDC);搞的。
请问这是怎么回事????为什么不能在自己的类里创建设备兼容DC?怎么改呀!!!???急~~~~~~~~~~~立刻给分,请帮忙UP

解决方案 »

  1.   

    BltTempDC是那里来的,如何定义的?
      

  2.   

    CDC *BltTempDC
    是CBitmapObject的私有成员
      

  3.   

    CBitmap BltTempBitmap;
    也是CBitmapObject的私有成员
    急呀~~~~~~~~~
    回复人: zhdleo(叮东) ( ) 信誉:105  2003-04-17 11:46:00  得分:0 
     
     
      看看BltTempBitmap
    先!
    BltTempBitmap也是刚刚创建的!!!!
    但是一执行BltTempDC->CreateCompatibleDC(pDC);就错了,还没到
    pBltTempBitmap = BltTempDC->SelectObject(&BltTempBitmap);
    就挂了????!!!!
      

  4.   

    BltTempBitmap.CreateCompatibleBitmap(pDC, pDC_Width, pDC_Height);
    BltTempDC->CreateCompatibleDC(pDC);这两句都设置上断点调试,看看两个里面的pDC、还有BltTempBitmap与BltTempDC的内容和变化。如果: BltTempBitmap.CreateCompatibleBitmap(pDC, pDC_Width, pDC_Height);
    通过,那说明pDC不该有什么问题。问题可能在BltTempDC上!
      

  5.   

    BltTempBitmap.CreateCompatibleBitmap(pDC, pDC_Width, pDC_Height);就是可以通过的!!
    在断点调试下pDC是正确的。就是BltTempDC上的问题,可是要怎么解决呢????
      

  6.   

    你的BltTempDC是指针,是不是没初始化呀???