線程裏打開對話框,按取消時直接返回Failure #2的原因

在線程裏打開一個對話框,初始化後顯示對話框,什麼也不操作,直接按“取消”按鈕

返回錯誤提示: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();

       ......

}

錯誤解除,困擾了半個多月的難題瞬間瓦解,贊一下自己,記錄之。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章