//本文皆为自己编程中的,第一印象理解的,皆没有完全论证, 如有不对的地方 还请大家指出

由于开辟的线程函数必须定义为static UINT procThread(LPVOID pParam);

如要在线程函数中访问本类中的成员变量(或者成员函数)可以通过AfxBeginThread(procThread, this); 这里的第二个参数this,将本类的地址传入到procThread()中去。

这样可以在procThread(LPVOID pParam){ xx_Class* pClassPointer = (xx_Classi)pParam;这样就可以用类的指针去访问xx_Class中的函数与变量了。

同样,如果在本xx.cpp中,同时要用到两个类。而且同时都需要在procThread()中用到。可以把需要用到的类打包成结构体,然后把结构体的地址传入到procThread()中去。

eg:

  typedef struct _TEST{

    Class1* _class1;

    Class2* _class2;

}TEST, *LPTEST;

void xx_Class::fun1() {

AfxBeginThread(procThread, &test) {

TEST _test ;

_test._class1 = 某类的对象地址;

_test._class2 =某类的对象地址;

}

threadProc(LPVOID pParam) {

LPTEST classInfo = (LPTEST)pParam;//把传进来的结构体地址复原

classInfo->_class1->指向所需要的成员变量或者函数; //依此类推

}

一句话就是通过传入相关的信息,在线程函数里复原使用!

 

posted on 2013-06-07 16:19  stay hungry!  阅读(443)  评论(0)    收藏  举报