【发布时间】:2013-04-11 17:29:10
【问题描述】:
我正在尝试在 c++ 上使用 GDI 绘制一些文本
碰巧我有一个类有一个返回状态的方法,我想画它
状态是一个std::string!
这就是我目前所拥有的:
RECT status = RECT();
status.left = rcClient.right-200;
status.left = rcClient.left;
status.top = rcClient.top;
status.bottom = rcClient.bottom;
DrawTextW(hdc, game->GetStatus().c_str(), 1, status, 0);
我的错误是:
错误 C2664:“FormatMessageW”:无法将参数 5 从“LPWSTR”转换为“char *”687 damas 错误 C2664:“FormatMessageW”:无法将参数 5 从“wchar_t *”转换为“char *”damas 错误 C2664:“DrawTextW”:无法将参数 2 从“const char *”转换为“LPCWSTR”我找不到解决此问题的方法...有人可以帮帮我吗?
【问题讨论】:
-
您似乎正在为要从当前选定的 Windows API 打印的文本使用不同宽度的字符串。要么切换到使用窄字符串(可能不是最佳解决方案),要么将游戏状态设为宽字符串。
-
使用
DrawTextA()和FormatMessageA()作为W变体采用宽字符串,但std::string是char*。 -
我尝试了另一种使用 textout 的解决方法...但它打印了一些奇怪的东西:(
-
@Killercode 这不是什么奇怪的东西,只是你的字符串类型不对。正如前面的cmets所说,要么改成wstring,要么改成DrawTextA。
-
项目设置可能是
unicode,它选择宽字符串和DrawTextW版本的函数。您可能需要change the settings。