C++数据类型转换 创建线程时,CreateThread参数3我要传递一个CString类型指针,CString怎么转成LPVOID

HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,//pointertosecurityattribu... HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
DWORD dwStackSize, // initial thread stack size
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to receive thread ID
);
DWORD WINAPI ThreadProc(
LPVOID lpParameter // thread data
);
过程函数传递一个lpParameter过来,我又要怎样将这个LPVOID类型的转成CString类型的,高分悬赏,我已试过几次,都没用,CString str="Hello World";
(LPVOID)str.GetBuffer()转化成LPVOID指针,过程函数中
CString rec=(LPCTSTR)lpParameter,然后用MessageBox(rec),出现的提示框为空内容是怎么回事,它们之间到底要怎么转换?
说错了,是参数4来送参数的 LPVOID lpParameter,
展开
 我来答
真白的纱雾d442c
2011-02-25 · TA获得超过1093个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:538万
展开全部
我觉得你的算法的问题在于
主线程在CreateThread后退出了函数,使得CString str被析构,这时创建的子线程再去取lpParameter的时候就无法取到正确的值
建议使用全局对象或者在堆上动态生成对象
ziyang64
2011-02-25 · TA获得超过962个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:813万
展开全部
试试这样传:
(LPVOID)&str
这样用:
CString rec = *(CString*)lpParameter;
追问
按你这方法编译没问题,但运行到CString rec = *(CString*)lpParameter; 时说读取oxffffff0时发生冲突
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongyue2008
2011-02-25 · TA获得超过3603个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:596万
展开全部
LPVOID 是一个指向空类型的指针,所以传给第四个参数的应该是一个指针。你改为
&CString 试一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hujkyd
2011-02-25 · TA获得超过103个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:162万
展开全部
你最好看看在CString rec=(LPCTSTR)lpParameter的时候str有没有被销毁掉。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式