分享

如何把CString对象作为AfxBeginThread()函数的第二个参数,如何标识

 禁忌石 2017-12-31
我在程序中定义了一个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的提醒.
在这非常谢谢四位的回答,分值一会就给!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多