读取文件并将其添加到文本框:字符串转换问题
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());
我使用:
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());