首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

江湖告急bitblt实现动画中的奇怪有关问题.(内存消耗严重.) .高手眷顾啊

2012-03-07 
江湖告急.bitblt实现动画中的奇怪问题.(内存消耗严重.) 十万火急....高手眷顾啊.我在利用BitBlt实现平滑动

江湖告急.bitblt实现动画中的奇怪问题.(内存消耗严重.) 十万火急....高手眷顾啊.
我在利用BitBlt实现平滑动画过程中出现严重的内存消耗.不知道为什么.希望高手给予解答.
下面是我用于实现动画的类;
在视图中调用init方法初始化该类.
在时间响应函数中调用Draw方法绘图.时间间隔10毫秒.

class   CCarton    
{
public:
CCarton();
virtual   ~CCarton();
void   Init(   CWnd*   pWnd   );
void   Draw(   CDC*   pDC,   INT   iX,   INT   iY   );


private:
CBitmap   m_bmp;
CBitmap   *m_pOldBmp;
CWnd*   m_pDrawWnd;
CDC   m_dcSrc;
BITMAP   bm;

};


CCarton::CCarton()
{
m_pOldBmp   =   NULL;
}

CCarton::~CCarton()
{
m_dcSrc.SelectObject(   m_pOldBmp   );
m_dcSrc.DeleteDC();
}


void   CCarton::Init(   CWnd*   pWnd   )
{
m_pDrawWnd   =   pWnd;
m_bmp.LoadBitmap(   IDB_BITMAP   );
m_bmp.GetBitmap(   &   bm   );
m_dcSrc.CreateCompatibleDC(   pWnd-> GetDC()   );
m_dcSrc.SetBkMode(   TRANSPARENT   );

m_pOldBmp   =   m_dcSrc.SelectObject(   &m_bmp   );
//m_dcSrc.DeleteDC();
}

void   CCarton::Draw(   CDC*   pDC,   INT   iX   =   0,   INT   iY   =   0   )
{

pDC-> BitBlt(   iX,   iY   ,bm.bmWidth,   bm.bmHeight,   &m_dcSrc,   0,   0,   SRCCOPY   );

}

[解决办法]
是VisualStudio吗?如果是,那在每个CPP文件的开头加上:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
然后按F5,就是调试,把程序运行一遍,结束之后,可以在《输出》窗口里看到生成的报告,可以发现内存泄漏,
detect memory leak!
然后就是泄漏的内在是在哪里被分配的。用这个办法可以查出内存泄漏的原因。

热点排行