RT.线程中会调用窗体类中的函数,关闭程序时
CTestView* pView=((CTestView*)(
(CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());pView->funtest();//<--出错:pView中的hWnd=0xdddddddd如果在调用funtest()前判断hWnd是否为0xdddddddd,如果是就退出线程可以吗?
怎么判断?

解决方案 »

  1.   

    if (!pView->GetSafeHwnd())退出线程
      

  2.   

    还是不行,
    错误:XXX内存不能为read.
      

  3.   

    要么直接把view的指针传递进线程处理
      

  4.   

    如果if (!pView->GetSafeHwnd())不行,就先IsBadWritePtr(pView,sizeof(CTestView))判断
      

  5.   

    我尝试了全局变量,还不行
    bool bTest;窗体在关闭前令bTest=false;线程
    ThreadTest()
    {
    ...
    if (!bTest)
      return;
    ...
    }
      

  6.   

    主要是因为
    CWnd*与HWN之间的转换是通过一个线程局部存储的MAP来实现的,所以跨线程使用CWnd*必须会出现问题。