正常情况下调用GetPage不会有问题,但是我启动一个线程后,在这个线程里面调用这个函数就有问题:CClientDlg * pdlg;pdlg = (CClientDlg *)AfxGetMainWnd();
pdlg->m_TopSheet.GetPage(index);上面最后一句代码导致异常?

解决方案 »

  1.   

    调试进去再AfxAssertFailedLine这个函数里面发现异常
      

  2.   

    pdlg = (CClientDlg *)AfxGetMainWnd();if(pdlg != NULL)
    {
    pdlg->m_TopSheet.GetPage(index);
    }AfxGetMainWnd在线程里可能有问题。
      

  3.   

    不要跨线程使用MFC的界面对象
    MFC的类不是线程安全的
    界面相关的东西就更加危险
    这种情况通过获取句柄发消息让主窗口在自己的线程中自行处理比较好
      

  4.   

    跨线程使用MFC对象很不安全,可以通过在线程之间传递消息来实现
      

  5.   

    to 4楼:
    多谢提醒,刚查了一些AfxGetMainWnd是有问题.
    to 5楼:
    有些时候我在线里需要知道用户在界面里面输入了什么,如果用发消息给主线程,然后主线程获得界面的输入后,在发消息给子线程,感觉比较麻烦啊