我在对话框内创建了一个编辑框控件和一个picture控件,希望通过读取编辑框控件内的代码来在图片控件中画图。
目前存在的问题是我第一遍输入代码后图像能正确画出来,但是我重新输入代码再点确定按钮就会报错,断点停留在wincore.cpp中的ASSERT(pWnd->m_hWnd == NULL); // only do once
我在网上查了一下,应该是我第1次获得窗口资源时没释放,第2次无法Create,相关代码如下:
void CEditDlg::OnBnClickedOk(){CDC*dc=m_pic.GetWindowDC();
CRect rect;
dc->GetWindow()->GetClientRect(&rect);
m_Gis2.Create(dc->GetWindow(),rect);//m_Gis2是CGisInterface类的一个对象,用来调用CGisInterface类中的画图函数
...//后面是画图的一些代码,在此省略
}
//Create函数如下
BOOL CGisInterface::Create(CWnd* lParent,const RECT& rect ,DWORD dwStyle )
{
CString wndcls=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,
(HBRUSH)GetStockObject(WHITE_BRUSH),LoadIcon(NULL,IDI_APPLICATION));
BOOL re = CWnd::Create(wndcls,"波形图",dwStyle,rect,lParent,600);//这句应该就是错误所在
ModifyStyleEx(0, WS_EX_CLIENTEDGE);
return re;
}
我想问一下如何释放第1次创建的窗口资源,具体代码应该写在何处?
目前存在的问题是我第一遍输入代码后图像能正确画出来,但是我重新输入代码再点确定按钮就会报错,断点停留在wincore.cpp中的ASSERT(pWnd->m_hWnd == NULL); // only do once
我在网上查了一下,应该是我第1次获得窗口资源时没释放,第2次无法Create,相关代码如下:
void CEditDlg::OnBnClickedOk(){CDC*dc=m_pic.GetWindowDC();
CRect rect;
dc->GetWindow()->GetClientRect(&rect);
m_Gis2.Create(dc->GetWindow(),rect);//m_Gis2是CGisInterface类的一个对象,用来调用CGisInterface类中的画图函数
...//后面是画图的一些代码,在此省略
}
//Create函数如下
BOOL CGisInterface::Create(CWnd* lParent,const RECT& rect ,DWORD dwStyle )
{
CString wndcls=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,
(HBRUSH)GetStockObject(WHITE_BRUSH),LoadIcon(NULL,IDI_APPLICATION));
BOOL re = CWnd::Create(wndcls,"波形图",dwStyle,rect,lParent,600);//这句应该就是错误所在
ModifyStyleEx(0, WS_EX_CLIENTEDGE);
return re;
}
我想问一下如何释放第1次创建的窗口资源,具体代码应该写在何处?
就是调用那个Picture控件的invalidate