//本文皆为自己编程中的,第一印象理解的,皆没有完全论证, 如有不对的地方 还请大家指出
由于开辟的线程函数必须定义为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->指向所需要的成员变量或者函数; //依此类推
}
一句话就是通过传入相关的信息,在线程函数里复原使用!
浙公网安备 33010602011771号