这个看你线程函数怎么写了,如果你创建线程的时候传个类实例对象的指针,然后在线程函数里调用该对象的成员函数,就可以使用类实例中的变量。例:DWORD gThreadProc(LONG);
class a
{
public:
   void StartThread();
   DWORD ThreadProc();
...
}
void a::StartThread()
{
   DWORD gdwThreadId = 0;
   CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)gThreadProc,this,0,&gdwThreadId);
}
DWORD gThreadProc(LONG lParam)
{
   a* pThis = (a*)lParam;
   return pThis->ThreadProc();
}全局的线程函数又转到了类成员函数,在a::ThreadProc()里面可以访问哪些变量就不用我说了吧。

解决方案 »

  1.   

    对象等等必须全是全局或静态的吗?
    不一定要是全局或静态的,如3楼"线程函数中使用变量时要么是在自己函数内部定义的局部变量,要么是外部的全局变量或者是静态变量"-------------------------------------------------
    能够直接使用类实例中的变量吗? 
    可以,如果要使用某个类实例的变量,就把该类的指针传如线程中,在线程里使用该指针即可,如下:class A
    {
        int b;
    };DWORD MyThread(LPVOID param);A aa;
    DWORD id;
    CreateThread(NULL,NULL,MyThread,(LPVOID)&aa,NULL,&id);//在线程里面
    DWORD MyThread(LPVOID param)
    {
        A *p = (A *)param;
        p->b = 5; //这里就可以直接使用类实例里面的变量了
        return 0;
    }
      

  2.   

    勿在浮沙筑高台,深入浅出MFC作者的开场白。
      

  3.   

    答案是肯定的。具体实现可以看看jthread的实现和使用:
    http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jthread记得给分哦楼主。