2016-07-07 18 views
1

我想在Visual Studio上使用C++填充列表框。我有一个std:string数组,我想使用它们。我的解决方案似乎不工作:使用SendMessage获取垃圾填充列表框

std::string label = "something"; 
char *buffer; 
buffer = _strdup((label).c_str()); 

我检查和缓冲变量包含正确的字符串,但后来我打电话的SendMessage

SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)buffer); 

列表框被填充,但不是“东西”我看到一些随机的日本字符...

+2

如果使用SendMessageA而不是SendMessage会发生什么? – MikeCAT

+0

它的作品!我需要对此进行调查......谢谢! – rekotc

+0

代码段出现'_strdup'内存泄漏,如果只是示例代码,则表示抱歉。也不需要'_strdup'调用。 –

回答

1

SendMessage是一个宏,它可能被定义为SendMessageW,它使用Unicode字符串。

您正在使用std::stringchar,因此请尝试使用明确使用ANSI字符串的SendMessageA

+2

错误的解决方案。使用Unicode文本。 –