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,好象得不到指针。
然后再运行函数
跨越线程是不能传递窗口对象的,你应该传递hWnd,在线程中向hWnd发送消息。比如,你应该传this->m_hWnd,然后在线程里 PostMessage(hWnd, ....)
我就是想将this传递过去后强制转换,但是一旦我调用updatedata的时候,就报错了。to wwwsq,我就是因为有些操作在主线程中进行,造成了响应缓慢,所以建立了辅助线程,要是在postmessage回去,那就起不到本来的作用了。
CCustomerCustomerModifyView *pview=(CCustomerCustomerModifyView *)pwnd;这是传指针过去
分数DOUBLE UP有分
FromHandle也不能跨线程调的。记住,窗口只能属于某个线程,出了这个线程,就没有这个窗口对象。FromHandle是根据句柄找窗口对象的指针,指针它应该是可以正确找到的,应为句柄是系统全局的变量,但是得到的窗口指针并不能用。
还有pivew->某CFORMView的成员变量.成员函数() 也可以正常执行。