现向CreateThread函数传递一个CString对象,在线程入口函数里显示出来,有问题,源码如下:
{ CString str("haha");
::CreateThread(NULL,0,kk,(LPVOID)&str,0,NULL);}
入口函数 DWORD WINAPI kk(LPVOID lpParameter)
{ CString str=(LPCSTR)lpParameter;
AfxMessageBox(str);
return 0;}
这样弹出对话框为乱码,请问怎样才能在入口函数中正确的获得传递的CString对象?看过一些帖子说不应该传递MFC的对象,如何解决?有正确显示即给分,望高手指点!
{ CString str("haha");
::CreateThread(NULL,0,kk,(LPVOID)&str,0,NULL);}
入口函数 DWORD WINAPI kk(LPVOID lpParameter)
{ CString str=(LPCSTR)lpParameter;
AfxMessageBox(str);
return 0;}
这样弹出对话框为乱码,请问怎样才能在入口函数中正确的获得传递的CString对象?看过一些帖子说不应该传递MFC的对象,如何解决?有正确显示即给分,望高手指点!
CString str = *((CString *)lpParameter);
{ CString str = *((CString *)lpParameter);
AfxMessageBox(str);
return 0;}
该不会线程内没改吧
CString* pstr=(CString*)lpParameter;
类型一致才可以
最好是定义个全局变量,或者是new一个传递进去
参考 xsgluozi 的答案