这是一个关于DC释放的问题,不过却花了很多时间,因为我一开始并没有把问题定位到DC。另外调用堆栈也无法定位到哪一个文件,哪一行,为什么无法定位?请看代码:
A::OnPaint()
{
CDC * pDC = GetDC();
pDC->DeleteDC();
}
显然在 pWnd->DeleteDC(); 这句有问题,应该 ReleaseDC(pDC),但是往往调用堆栈指向的是其他OnPaint,因为其他OnPaint用到这个DC时,已经在A::OnPaint()删除了。
这个时候系统不可能定位正确。下面是这个错误的截图:
winhand.cpp 文件部分截图: