我原来没有接触过vc++,现在在改别人的一个程序,
他原来定义的线程是
static UNIT ReadThreadFunction(LPVIOD wParam);
我现在把前面的static 去掉就提示错误:error C2665:'AfxBeginThread':none of the 2 overloads can convert parameter 1 from type 'unsigned int [void *]';这个错误要怎么解决啊?
线程定义,一定要定义成静态的吗?还有线程返回的值是什么格式的啊?我能不能把线程返回的值赋值给一个整形变量呢?

解决方案 »

  1.   

    1   必须是static 或全局函数(其实是一样的)
    2   返回值是UINT,可以付给任何变量
      

  2.   

    好像是AfxBeginThread的第二个参数不能从'unsigned   int转化为void*,强制转换一下
      

  3.   

    在.cpp 的文件中:
    CWinThread* m_pRasDialThread=AfxBeginThread(ReadThreadFunction, this ,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
    请问m_pRasDialThread接受到的是线程返回的值吗?
    我现在定义了一个变量:int flag1;
    请问我如何将线程返回的值赋值给flag1?谢谢各位了!!
      

  4.   

    to yxz_lp:
    请问如何强制转换啊?
      

  5.   

    static  不能去掉,去掉有就会出现那个错误,即使强制转换也不行。如果要把线程函数些在类的里面的画,就只能static   修饰,否则只能全局函数。
      

  6.   

    在.cpp   的文件中: 
    CWinThread*   m_pRasDialThread=AfxBeginThread(ReadThreadFunction,   this   ,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); 
    请问m_pRasDialThread接受到的是线程返回的值吗? 
    我现在定义了一个变量:int   flag1; 
    请问我如何将线程返回的值赋值给flag1? 谢谢各位了!!
    --------------------------------------
    GetExitCodeThread()