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

时间:2015-01-05 11:58:50

标签: c++ winapi sendmessage stdstring

我用:

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

2 个答案:

答案 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());