使用更新的 gcc 编译器从 c++ 切换到代码块,这会导致我的源代码中出现错误,这些源代码使用旧的 gcc 编译器 v
Switched to Code Blocks from c++ with updated gcc compiler which causes errors in my source code that compiled fine with the old gcc compiler v3
问题如下:
SendMessage(hwnd_SSMAIN_PARENTCONTAINER_RTFCONTROL,WM_SETTEXT,(WPARAM)0,(LPARAM&)webfilebuffer.str());
- hwnd_SSMAIN_PARENTCONTAINER_RTFCONTROL是 RTF 控件的句柄
- WebFileBuffer 是字符串流的类型
并且使用旧版本的 GCC 在 dev C++ 中编译良好。
我刚刚更新到代码块,并使用了开发 c++ 项目的文件菜单中的导入命令。
现在在代码块中,我收到上述发送消息的错误:
E:\Projects\PWS Source Studio 7-18-12\open-save-new dialog.h|94|error: 将类型为"std::basic_stringstream::__string_type {aka std::basic_string}"的右值表达式强制转换为键入"LPARAM& {aka long int&}"|
我刚刚开始使用较新版本的 gcc MinGW。
我在网上查找了这个错误,但没有任何发现,如果我只是查找"类型右值表达式的无效强制转换"而不是"类型为'std::basic_stringstream::__string_type {aka std::basic_string}'的右值表达式的无效强制转换"键入"LPARAM& {aka long int&}"|"
我在谷歌上找到了几件事,我试图在上面做那一行,但似乎无论我尝试做什么都不起作用。
从外观上看,我无法再将 str 转换为 lparam,并且它现在只接受 lparam 自己,即它必须是类似于 LPARAM 的东西;
而不是字符串;然后将其转换为 lparam 以便发送消息以接受它。
有人可以向我解释发生了什么以及我需要做什么才能让它工作吗?
谢谢
这样做
SendMessage(hwnd_SSMAIN_PARENTCONTAINER_RTFCONTROL,WM_SETTEXT,(WPARAM)0,
(LPARAM)webfilebuffer.str().c_str());
此代码将 char* 转换为 LPARAM,这应该是合法的。
您还必须更改接收消息的代码。如果您需要帮助,请发布该代码。
相关文章:
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 在Linux中哪里可以找到互斥、未来等的源代码
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用Bison生成的编译器编译源代码
- 包含未定义行为的源代码使编译器崩溃是否合法?
- 有没有办法使用 Clang 减小编译器错误测试用例的预处理源代码的大小
- 从源代码构建编译器是否会带来更好的优化
- 为什么aix上的xlC编译器总是为相同的c++源代码生成不同的对象文件
- 验证给定C++编译器是否将源代码读取为 C++11 的快速简单代码是什么?
- 使用更新的 gcc 编译器从 c++ 切换到代码块,这会导致我的源代码中出现错误,这些源代码使用旧的 gcc 编译器 v
- 如何检查如果MS编译器将编译我的源代码
- 编写C/ c++编译器到MBR,在启动操作系统之前执行源代码
- 对其资源使用源代码控制的c++编译器