创建一全局线程 pMyThread=AfxBeginThread(RunProc,(void*)this); 
但出现个问题:我用UpdateData(FALSE)将某个变量值传给对话框的edit控件显示时报错,调试时发现错误指向如下代码:
请教大家怎么解决或者有其他方法吗?
void CWnd::AssertValid() const
{
if (m_hWnd == NULL)
return;     // null (unattached) windows are valid// check for special wnd??? values
ASSERT(HWND_TOP == NULL);       // same as desktop
if (m_hWnd == HWND_BOTTOM)
ASSERT(this == &CWnd::wndBottom);
else if (m_hWnd == HWND_TOPMOST)
ASSERT(this == &CWnd::wndTopMost);
else if (m_hWnd == HWND_NOTOPMOST)
ASSERT(this == &CWnd::wndNoTopMost);
else
{
// should be a normal window
ASSERT(::IsWindow(m_hWnd));// should also be in the permanent or temporary handle map
CHandleMap* pMap = afxMapHWND();
ASSERT(pMap != NULL);CObject* p;
ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
/*错误就指向这里*/(p = pMap->LookupTemporary(m_hWnd)) != NULL);
ASSERT((CWnd*)p == this);

解决方案 »

  1.   

    不要传递MFC类的指针,传其句柄,用发消息的方式让界面更新
      

  2.   

    可以详细一点吗?pMyThread=AfxBeginThread(RunProc,(void*)this); 有问题?
      

  3.   

    pMyThread=AfxBeginThread(RunProc,(void*)this->GetSafeHwnd()); UINT RunProc(LPVOID pParam)
    {
             ..................
    ::SetDlgItemText(HWND(pParam), IDC_EDIT1, "test");
             ................ return 0;
    }