在一个MFC工程里,调用AfxBeginThread函数创建线程!使用如下语句
AfxBeginThread(Func,GetSafeHwnd());
回调函数Func定义成全局函数,在.h文件中中声明成 UINT Func(LPVOID lpParam){}
可现在问题是在开启线程函数处出现:afxbeginthread:none of the 2 overloads can convert parameter 1 from type 'unsigned int(_cded *)(long)'的错误!
各位大侠请指教,这到底是为什么啊?

解决方案 »

  1.   

    应该吧线程函数定义为
    DWORD WINAPI ThreadFunc(PVOID pvParam)
      

  2.   

    把类头 加上  UINT YOURCLASS::Func(LPVOID lpParam){}
      

  3.   

    在.h文件中中声明成 UINT Func(LPVOID lpParam){}
    ===========
    声明中就不应该加{}了,应该写成在.h文件中中声明成 UINT Func(LPVOID lpParam);
      

  4.   

    AfxBeginThread(Func,GetSafeHwnd());
    =======================
    改成这样试试:AfxBeginThread( (AFX_THREADPROC)Func, GetSafeHwnd());
      

  5.   

    函数定义有问题
    UINT   MyFun(.....);
      

  6.   

    函数定义有问题
    定义为全局函数UINT MyFun(.....);就不会有问题
      

  7.   

    static UINT Func(LPVOID lpParam){ return 0;};
      

  8.   

    unsigned int(_cded *)(long) 定义成这个类型就vok了
      

  9.   

    人家的函数又不是类的成员函数,用的是全局函数,怎么不行啊,还是加(AFX_THREADPROC)转化一下类型。