我在
class CMYApp : public CWinApp
{
public:
static void ChildThread ( LPVOID );
}在
BOOL CMYApp::InitInstance()
{
UINT i = 0 ;
AfxBeginThread ( ChildThread,(LPVOID)(&i),THREAD_PRIORITY_ABOVE_NORMAL );
}
编译出错:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'void (void *)'

解决方案 »

  1.   

    线程函数应该定义成
    static UINT ChildThread (LPVOID );
      

  2.   

    static void ChildThread ( LPVOID );
    返回类型应该是 UINT,
    最好声明在类外部。
      

  3.   

    线程函数要定义成全局或静态函数。因为普通成员函数有一个隐藏的this指针参数
      

  4.   

    UINT ChildThread ( LPVOID lparam );或者:unsigned long __stdcall ChildThread(LPVOID lparam);
      

  5.   

    之所以要用UINT返回类型,而不用VOID是因为系统对线程函数所要求的。系统(或其他线程)需要知道该线程的退出代码(也就是返回的UINT),在一些情况下可以通过这个退出代码决定下一步做什么、怎么做。
      

  6.   

    static DWORD ChildThread ( LPVOID *);