在线程里打开一个对话框,初始化后显示对话框,什么也不操作,直接按“取消”按钮
返回错误提示:Run-Time Check Failure #2 - Stack around the variable 'dlg' was corrupted.
对话框定义:class CXXXDLG : public CDialog
{
DECLARE_DYNAMIC(CXXXDLG)
// Construction
public:
CXXXDLG(CWnd* pParent = NULL); // standard constructor
.......
}
在View中定义线程,打开对话框
UINT CXXXView::OnXXX_THREAD(LPVOID pParam) //线程的执行函数 静态函数
{
assert(pParam != NULL);
CXXXView * This = (CXXXView*) pParam;
assert(IsWindow(This->m_hWnd));
CXXXDLG MyDlg;
MyDlg.DoModal();
......
}
终于找到解决办法:将调用方式修改为指针
UINT CXXXView::OnXXX_THREAD(LPVOID pParam)
{
assert(pParam != NULL);
CXXXView * This = (CXXXView*) pParam;
assert(IsWindow(This->m_hWnd));
CXXXDLG* MyDlg=new CXXXDLG(This);
MyDlg->DoModal();
......
}
错误解除,困扰了半个多月的难题瞬间瓦解,赞一下自己,记录之。