3

我正在尝试在 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”  

我找不到解决此问题的方法...有人可以帮助我吗?

4

1 回答 1

3

Astd::string使用字符,但DrawTextW期望使用宽字符(WCHARs,与wchar_ts 相同)。

您可以DrawTextA使用您的字符串显式调用。它将使用宽字符复制您的字符串并将其传递给DrawTextW.

DrawTextA(hdc, game->GetStatus().c_str(), 1, &status, 0);

(另请注意,它需要一个指向 的指针RECT,因此您也需要&。)

于 2013-04-18T16:33:42.820 回答