我在程序中定义了一个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的提醒.
在这非常谢谢四位的回答,分值一会就给!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。