在線程裏打開一個對話框,初始化後顯示對話框,什麼也不操作,直接按“取消”按鈕
返回錯誤提示: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();
......
}
錯誤解除,困擾了半個多月的難題瞬間瓦解,贊一下自己,記錄之。