使用GDI出错"...winocc.cpp line 92"!在GetDlgItem(nID)这一行
程序的执行顺序主要是这样的:
先在Dialog 类 中的 OnPaint()中,画出坐标轴等的信息。
再在A类中调用Dialog类中的函数 假设为 Dialog::DrawA()。(A类主要提供一些信息,供Dialog类画图)
---在OnPaint()中程序可以正常的执行, 但在调用Dialog::DrawA()时出错了,
调试位置如下:
Dialog::DrawA()
{
CWnd *pWnd = GetDlgItem(nID); 这一行
}
我在OnPaint()中执行 CWnd *pWnd = GetDlgItem(nID;是好好的。
请问出现了什么问题。。
[解决办法]
你在主对话框中调用 CPic->DoModel();创建了另一个模式对话框,在该模式对话框关闭之前主对话框肯定是无法使用的。theApp.m_pic = cPic; 这一行保存了CPicDlg的指针cPic,我想你应该是关闭了CPicDlg模式对话框(关闭即销毁),然后又在其他类操作m_pic,而这个时候m_pic指向的对话框对象早已不复存在,所以调用该对话框的GetDlgItem就会失败。在主对话框创建另一模式对话框这种写法一般情况下很少使用,推荐创建非模式对话框,Dialog* cPic = new CPicDlg(); cPic->Create(IDD_XXX);不过仍然需要注意该对话框的生命周期的管理,一般情况下然该对话框在关闭的时候隐藏而不是销毁,当主对话框销毁的时候再随之销毁。