所以在重载InitInstance()函数时 return FALSE?为什么要这么干呢?----这样你不会成功.你干吗不直接用一个Worker Thread呢,如果你不要消息循环.

解决方案 »

  1.   

        之所以这么做,是因为在InitInstance中调用了很多自己定义的函数,流程也很复杂,我想把它们放在一起便于管理。
        我看有些书上说,在InitInstance中完成操作之后如果return FALSE 就会避免进入消息循环,return TRUE则会进入消息循环。
      

  2.   

    你这样做,线程就没有意义了。
    不想要消息循环,可以用CreateThread,_beginthread/_beginthreadex创建线程。
    如果InitInstance返回FALSE表示线程初始化失败,CWinThread将会终止线程。
    如果一定要用CWinThread,而且也不进入消息循环,可以这样用:
    1、重载CWinThread::Run函数,并且不调用基类的Run()(基类的Run()包含了消息循环)。
    2、使用CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam)创建线程,其中pfnThreadProc是线程函数入口指针,pParam是传递给pfnThreadProc的参数:
    UINT MyThreadProc( LPVOID pParam );    //pfnThreadProc的原型
    3、在你重载的CWinThread创建前把m_pfnThreadProc, m_pThreadParams两个成员变量赋成有效值,只要m_pfnThreadProc的值不是NULL,CWinThread就不会进入消息循环。