CreateCompatibleDC的重复调用问题(急)

newton2069 2009-12-03 12:05:09
我有一个函数大致是这样的
UpdateImage()
{
CDC memDC,memDC2;
memDC.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC,100,100);
CBitmap* pOldBitmap=memDC.SelectObject(&bitmap);
.... // 在memDC上画图
memDC.SelectObject(pOldBitmap);
HBITMAP hBitmap=(HBITMAP)bitmap;
m_pResultImage.CreateFromHBITMAP(hBitmap); //m_pResultImage是全局变量,CxImage类型

bitmap.DeleteObject();
memDC.DeleteDC();
}

因为我想需要更新m_pResultImage对应的图像时就调用UpdateImage,所以可能会调用多次此函数,但第一次调用时
CreateCompatibleDC是成功的,第二次就失败了。请问是哪出问题了
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
newton2069 2009-12-15
  • 打赏
  • 举报
回复
但它怎么会影响memDC的创建呢?
fandh 2009-12-15
  • 打赏
  • 举报
回复
m_pResultImage.CreateFromHBITMAP(hBitmap); //m_pResultImage是全局变量,CxImage类型
应该是这个重复调用导致的,第一次已经创建了,以后再创建,的确会出错!
newton2069 2009-12-15
  • 打赏
  • 举报
回复
用了DWORD dwErr = GetLastError(); 错误代码是0
另外补充一下,我第一次调用UpdateImage是在一个对话框的OnInitDialog中调用的,然后第二次调用是在这个对话框中的OnOk函数中调用的,我怀疑是因为在OnInitDialog中调用的原因。
急,哪位知道原因请告诉我,非常感谢
Ghost90 2009-12-03
  • 打赏
  • 举报
回复
bitmap.CreateCompatibleBitmap(pDC,100,100);
是这句 出错吧?
位图被重复创建
zgl7903 2009-12-03
  • 打赏
  • 举报
回复

if(!memDC.CreateCompatibleDC(pDC))
{
DWORD dwErr = GetLastError();
}

看看错误代码是什么?
fandh 2009-12-03
  • 打赏
  • 举报
回复
看不出有失败地方!从上面的代码上面看,你的GDI资源都释放了!会不会你其它地方用到什么东西,还有你没有贴出来的代码,是不是有问题?
楼主可以先注释一些代码调试一下,看看是不是这段代码有问题!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧