char* pData = (char*)GlobalLock(hMem); m_listBox.GetText(nIndex, pData);无法将参数 2 从“char *”转换为“LPTSTR”
时间: 2024-05-24 19:11:59 浏览: 71
通过string转换比较好些,很多重载函数要么是char * ,要么是String
这个错误是因为 m_listBox.GetText 函数的参数类型为 LPTSTR,而您传递的是 char* 类型的 pData。LPTSTR 是一个 typedef,它在不同的编译环境下可能会被定义为不同的类型,例如在 Unicode 编译环境下它被定义为 WCHAR*,在 ANSI 编译环境下它被定义为 char*。因此,如果您想要传递 char* 类型的参数,您需要在调用函数之前将其转换为正确的类型,如下所示:
char* pData = (char*)GlobalLock(hMem);
m_listBox.GetText(nIndex, (LPTSTR)pData);
这样就可以将 char* 类型的 pData 转换为 LPTSTR 类型,避免了编译错误。但是,请注意,如果您在 Unicode 编译环境下运行程序,则需要使用 MultiByteToWideChar 函数将 char* 类型的字符串转换为 WCHAR* 类型的字符串,以确保正确处理 Unicode 字符。
阅读全文