自己构造的一个类里:
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
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
解决方案 »
- freetype的问题
- Tab Ctrl 与 CListCtrl 使用
- ACE的end_reactor_event_loop奇怪问题?
- 如何在静态控件或是图片控件中显示jpg图片啊
- 想在本市成立一个计算机协会,谁知道怎么搞?或提供相关资料。
- 如何响应对话框的消息!?内祥
- CPP的入口函数是什么?
- 请教:SQL Server2000系统表syscolumns中,那个字段表示对应记录(字段)是否为表的主键?立即结帐!谢谢!
- DLL...在线急等
- vc++6.0 MFC WM_CTLCOLOR消息和编辑框实时显示问题,求高手帮忙。。
- 我想在展开菜单而未显示时程序马上中断,怎样设置断点?
- API串口通信,打开,设置串口都正确,为什么数据发送不出?
是CBitmapObject的私有成员
也是CBitmapObject的私有成员
急呀~~~~~~~~~
回复人: zhdleo(叮东) ( ) 信誉:105 2003-04-17 11:46:00 得分:0
看看BltTempBitmap
先!
BltTempBitmap也是刚刚创建的!!!!
但是一执行BltTempDC->CreateCompatibleDC(pDC);就错了,还没到
pBltTempBitmap = BltTempDC->SelectObject(&BltTempBitmap);
就挂了????!!!!
BltTempDC->CreateCompatibleDC(pDC);这两句都设置上断点调试,看看两个里面的pDC、还有BltTempBitmap与BltTempDC的内容和变化。如果: BltTempBitmap.CreateCompatibleBitmap(pDC, pDC_Width, pDC_Height);
通过,那说明pDC不该有什么问题。问题可能在BltTempDC上!
在断点调试下pDC是正确的。就是BltTempDC上的问题,可是要怎么解决呢????