2016-07-07 48 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文本。 –