我不能使用DrawText()

时间:2013-04-18 14:26:59

标签: c++ winapi gdi

我正试图在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);

我遇到的错误是:

error C2664: 'FormatMessageW' : cannot convert parameter 5 from 'LPWSTR' to 'char *'687 damas
error C2664: 'FormatMessageW' : cannot convert parameter 5 from 'wchar_t *' to 'char *'damas
error C2664: 'DrawTextW' : cannot convert parameter 2 from 'const char *' to 'LPCWSTR'  

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

1 个答案:

答案 0 :(得分:3)

std::string使用字符,但DrawTextW期待宽字符(WCHAR s,与wchar_t s相同。)

您可以使用字符串明确调用DrawTextA。它将使用宽字符复制您的字符串,并将其传递给DrawTextW

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

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