读取文件并将其添加到文本框:字符串转换问题

Read a file and add it to a textbox : string conversion issue

我使用:

std::ifstream t("myfile.txt");
std::string str((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());

SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) str); 

myfile.txt 的内容读入使用以下方法创建的文本框:

HWND hwndEdit = CreateWindowEx(0, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, ...)

如何解决这个错误? :

main.cpp(34) : error C2440: 'type cast' : cannot convert from 'std::string' to 'LPARAM' 
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

据我了解WM_SETTEXT lparam 的文档应该是

A pointer to a null-terminated string that is the window text.

表示c风格的字符串,一个char*变量。你可以尝试传递 str.c_str() 一个 lParam.

LPARAM 定义为:typedef LONG_PTR LPARAM

所以基本上它需要一个指向通过消息传递的某些数据的指针。
然后接收方可以根据消息类型对其进行解释。

如果你想传递一个字符串,你应该传递它的底层c_str()
当然,确保该字符串在消息到达之前有效:

SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) str.c_str());