在MFC多文档多视图下开发程序,运行一会,会出现错误,调试得知在wingdi.cpp中的
int CDC::SetMapMode(int nMapMode)
{
ASSERT(m_hDC != NULL);
int nRetVal = 0; if (m_hDC != m_hAttribDC)
nRetVal = ::SetMapMode(m_hDC, nMapMode);
if (m_hAttribDC != NULL)
nRetVal = ::SetMapMode(m_hAttribDC, nMapMode);
return nRetVal;
}
这个函数中,m_hDC的值为空,但是pDC的值不为空,我刚开始学,不太懂,请各位高手帮忙看一下,谢谢!

解决方案 »

  1.   

    pDC, 和m_hDC不是一回事pdc需要关联一个或者获取一个dc才能使用
      

  2.   

    很明显,楼主使用了GDI资源没有释放!
    对应的CDC 如果是GetDC(),用完后就要ReleaseDC()来释放,如果是create得到的DC,要DeleteDC释放!
    还有pen/brush、bmp等其它的一些资源,都要有对应的释放!
      

  3.   

    GetDC()的我都用ReleaseDC()释放了
    还有就是问一下大家如果我在WM_LBUTTONDOWN里进行点选处理的话在里面对获得的DC进行映射模式的改变会不会出现问题
      

  4.   

    参考下面的连接,把你开辟的 GDI资源全部正确的释放掉,问题就解决了。http://www.ecjtu.org/forum/read.php?tid-22903-page-e-fpage-6.html
      

  5.   

    这块内容是我这块程序自己运行的时候没问题,我这块是在一个视图上绘图,然后在这个基础上生成另一个视图进行其他的绘图,在对新生成的视图所绘制的图形进行操作的时候会产生这个问题,我的代码都检查了,提示出错的地方我对资源都进行了回收,但是还是有错,显示m_hDC为空,但pDC不为空。
    而且提示出错的时间或事件并不确定,不知道啥时候就会提示这个错误