AfxBeginThread(afx_Load_CustomerCustomer_modify_data,this,THREAD_PRIORITY_NORMAL);将view的this指针当参数传给了这个辅助线程。辅助线程中,这句报错。 
pview->UpdateData();落在: ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
(p = pMap->LookupTemporary(m_hWnd)) != NULL);请问如何修改。 试了一下传hwnd过去。然后用CWND:fromhandle,好象得不到指针。

解决方案 »

  1.   

    传this传过去,然后强制转化成(CYouView*)
    然后再运行函数
      

  2.   


    跨越线程是不能传递窗口对象的,你应该传递hWnd,在线程中向hWnd发送消息。比如,你应该传this->m_hWnd,然后在线程里 PostMessage(hWnd, ....)
      

  3.   

    to akiy .
    我就是想将this传递过去后强制转换,但是一旦我调用updatedata的时候,就报错了。to wwwsq,我就是因为有些操作在主线程中进行,造成了响应缓慢,所以建立了辅助线程,要是在postmessage回去,那就起不到本来的作用了。
      

  4.   

    附上传句柄过去的代码,(报错) CWnd *pwnd=CWnd::FromHandle((HWND)lparam);
    CCustomerCustomerModifyView *pview=(CCustomerCustomerModifyView *)pwnd;这是传指针过去
    分数DOUBLE UP有分
      

  5.   

    为什么上面这段代码获得的pview,是CTempWnd的类型?
      

  6.   


    FromHandle也不能跨线程调的。记住,窗口只能属于某个线程,出了这个线程,就没有这个窗口对象。FromHandle是根据句柄找窗口对象的指针,指针它应该是可以正确找到的,应为句柄是系统全局的变量,但是得到的窗口指针并不能用。
      

  7.   

    那奇怪了,我 pivew->某CFORMView的成员变量="DSAGADSF"这倒是可以用的。
    还有pivew->某CFORMView的成员变量.成员函数() 也可以正常执行。