第三个参数指定了必须为线程写一个全局函数,它的返回值必须为   UINT类型,而且必须
有LPVOID类型的参数.

解决方案 »

  1.   

    类的普通成员函数均有一个this指针,不能作为CreateThread的参数,但类的静态成员函数可以。你可以把this指针包含在线程的启动参数中,然后在线程的执行函数里就可以通过那个指针访问类的成员了。
      

  2.   

    panda_w和FBStudio都说得很对,只有这样了
      

  3.   

    的确如楼上各位兄弟所说,类成员函数做线程执行函数必须是静态的,
    这是因为C++在编译时,为了处理重载的函数名,将非静态的成员函数名改为
    唯一的名字(一长串乱七八糟的字符,如果你有兴趣,可以研究C++的处理办法)
    而CreateThread的第三个参数是一个函数指针,在编译后这个函数名与类的
    成员函数名是不相同的,所以出错.我想还有二种方法你可以参考一下:(你原来的类用某类代替)
    (1) 从CWinThread类派生出需要的线程,在其中实现你想要在某类中实现的成员
    函数,具体的实现方法视线程的类型不同而不同,你可以参考一下VC中的例子.之
    后,在你的某类中添加一个新线程类的成员变量,在需要的时候启动线程.可以用
    一些Event等控制线程的运行.如果新线程类需要访问某类的成员变量,可以将某
    类的this指针传给新线程类并声明friend.
    (2) 直接从CWinThread派生出某类.
    我认为以上两种方法更符合面向对象的思想.