2013-04-18 1 views
3

나는 내가 상태를 반환하는 방법이있는 클래스를 가지고 발생나는 DrawText에()를 사용할 수 없습니다

C++에 GDI를 사용하여 텍스트를 drwa하려고 내가 그것을

을 그리려

상태는 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' 

... 누군가가 나를 도울 수 그래서 여기

는 내가 지금까지 무엇을 가지고 아웃?

+2

것 같습니다 선택된 Windows API. 좁은 문자열 (아마도 최선의 해결책은 아님)으로 전환하거나 게임 상태를 넓은 문자열로 만드십시오. – Will

+2

'DrawTextA()'와'FormatMessageA()'를'W' 변종으로 사용하면 넓은 문자열을 사용하지만'std :: string'는'char *'입니다. – hmjd

+0

textout을 사용하여 또 다른 해결 방법을 시도했지만 ... 이상한 것을 인쇄합니다. ( – Killercode

답변

3
std::string는 문자를 사용

하지만 DrawTextW 와이드 문자 (S wchar_t 동일 WCHAR들) 기대된다.

문자열로 DrawTextA을 명시 적으로 호출 할 수 있습니다. 넓은 문자열을 사용하여 문자열을 복사 한 후 DrawTextW으로 전달합니다.

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

는 (또는 RECT에 대한 포인터를 취 있습니다, 그래서 당신은뿐만 아니라 &이 필요합니다.) 당신이 현재에서 인쇄 할 텍스트에 대해 서로 다른 폭 문자열을 사용하는 것처럼

관련 문제