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

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,

我觉得你的算法的问题在于
主线程在CreateThread后退出了函数,使得CString str被析构,这时创建的子线程再去取lpParameter的时候就无法取到正确的值
建议使用全局对象或者在堆上动态生成对象
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-25
试试这样传:
(LPVOID)&str
这样用:
CString rec = *(CString*)lpParameter;追问

按你这方法编译没问题,但运行到CString rec = *(CString*)lpParameter; 时说读取oxffffff0时发生冲突

第2个回答  2011-02-25
LPVOID 是一个指向空类型的指针,所以传给第四个参数的应该是一个指针。你改为
&CString 试一下。
第3个回答  2011-02-25
你最好看看在CString rec=(LPCTSTR)lpParameter的时候str有没有被销毁掉。。

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答