如题
取CString的地址传指针啊
CString::GetBuffer
MAKELPARAM
CString str("aaaa");
(LPARAM)str.GetBuffer();
这样
CString *pStr=&str;
LPARAM lp=(LPARAM) pStr;
在线程内部为CString *pStr=(CString*)lp;
然后就可以用*pStr来表示所传的参数.
注意LPARAM其实是一种void*类型,C中都是用void*来表示或传递各种不同的类型的指针的.
LPARAM = (LPARAM)((LPCTSTR)str);
得到的是里面的字符串指针
问题是你要干吗,理论上不存在从一个CString对象到一个LPARAM变量的转换。
你是想要一个CString对象的地址呢?还是想要一个CString对象里边的字符缓冲区的地址呢?
要謹慎將CString做lParam來傳遞.因為一般情況下,等你的消息發送出后,CString自動析構了.可以用這種方法new char[X];然后發送出去后,記得delete [] (char*)lParam,不然會發生內存泄漏.
楼上说得对
要謹慎將CString做lParam來傳遞.因為一般情況下,等你的消息發送出后,CString自動析構了.可以用這種方法new char[X];然后發送出去后,記得delete [] (char*)lParam,不然會發生內存泄漏.
的确,不过如果CString是全局变量就没有关系了