我在程序中定义了一个CString对象,想把它作为AfxBeginThread()的第二个参数传递到线程函数中,如何实现? 如CString str="jijij"; AfxBeginThread(MyThreadProc, LPVOID pParam); UINT MyThreadProc( LPVOID pParam ) 在函数MyThreadProc( LPVOID pParam )里如何取出这个对象 谢谢! ****************************************************** 调用 AfxBeginThread(MyThreadProc, (LPVOID)&str); 取出 (CString*)pParam *********************************************************** 调用 AfxBeginThread(MyThreadProc, &str); 取出 CString *strRead = (CString *)theParam; 补充一点是这个CString不能使局部变量,应该是全局变量,或者static的(不过不太好) ************************************************************** CString *str= new CString(); // 在堆里申请,线程退出后销毁 *str = "jijij"; AfxBeginThread(MyThreadProc, (LPVOID)str); ******************************************************************* 问题解决了,我的CString对象是个局部变量,之前向xing_xing_xing和 happyprince说的那样传递的,可是到线程函数中取出之后不是我传递过去的数据.
解决方法:向zhymax说的我又建了个对象CString *str= new CString(); 把*str赋值为我想传递的对象,调用AfxBeginThread(MyThreadProc, str); 取出CString *strRead = (CString *)theParam 在线程结束之前把对象给delete.谢谢truewill的提醒. 在这非常谢谢四位的回答,分值一会就给! |
|