我用:
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
答案 0 :(得分:2)
据我所知,WM_SETTEXT文件应该是lparam
指向以null结尾的字符串的指针,该字符串是窗口文本。
表示c样式字符串,char *变量。你可以尝试传递str.c_str()一个lParam。
答案 1 :(得分:1)
LPARAM
定义为:typedef LONG_PTR LPARAM
所以基本上它需要指向一些通过消息传递的数据的指针 然后接收器可以根据消息类型对其进行解释。
如果要传递字符串,则应传递其基础c_str()
当然,确保字符串在消息到达之前有效:
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) str.c_str());