我用CreateThread创建了一个线程,在线程的入口函数里,我定义了一个对话框对象,然后再domodal。这样程序运行是出错。

解决方案 »

  1.   

    MFC的界面部分是线程相关的,不要在工作线程里直接操作界面,通过发消息给主界面然后由主界面来完成
      

  2.   

    只要不涉及界面操作,一般没问题,domodal肯定不行,这个函数要检测窗口句柄有效性,而窗口是线程拥有的
      

  3.   

    工作线程不要做任何窗口相关的工作。
    另外线程最好用_beginthreadex
      

  4.   

    问题的关键是函数调用要配套,和界面什么的没关系如果你要用 MFC 中的对话框类,则必须用MFC中的线程创建函数 AfxBeginThread
    如果你用CreateThread创建线程,则你只能用 API的方式创建对话框 
      

  5.   

    大多数MFC对象是线程不安全的,在线程的入口函数里传入窗口句柄,CWnd::FromHandle()并强制转换成对话框,看看这样能否使用。
      

  6.   

    如果加了窗体,你就得自己写消息处理循环,书上说尽量不要在工作线程加界面,其实用CreateThread创建的线程是可以加界面的,只是处理麻烦点
      

  7.   

    引用 5 楼 marrco2005 的回复:
    问题的关键是函数调用要配套,和界面什么的没关系 如果你要用 MFC 中的对话框类,则必须用MFC中的线程创建函数 AfxBeginThread 
    如果你用CreateThread创建线程,则你只能用 API的方式创建对话框 AfxBeginThread好处是不要担心销毁线程会出错