C++ проблема с параметром LPCSTR функции gdi TextOut()

Я пытаюсь использовать функцию TextOut для рисования слов в моем окне, и следующий метод отлично работает для меня:

HDC hdc = GetDC(windowHandle);
TextOut(hdc, 10, 10, TEXT("Hello World"), 16);
ReleaseDC(windowHandle, hdc);

И это выводит:Hello World

Все хорошо, пока, когда я делаю следующий метод:

HDC hdc = GetDC(windowHandle);
string myString = "Hello World";
TextOut(hdc, 10, 10, myString.c_str(), 16);
ReleaseDC(windowHandle, hdc);

программа выводит: Hello World#$%^&

и #$%^& part на самом деле являются другими квадратными символами, которые я не знаю, как писать на клавиатуре. Я понимаю, что четвертый параметр функции TextOut имеет тип LPCSTR, и использование функции.c_str() после моей строки должно правильно выводить переменную LPCSTR, и так оно и есть, поскольку программа выполняется, однако почему я получаю # $% ^ & включено в конце Hello World, и как мне решить эту проблему? Мне нужно использовать второй метод, а не первый, потому что моя программа будет генерировать строки, которые затем я хотел бы вывести в мое окно.

1 ответ

Решение

Согласно документации TextOut ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd145133%28v=vs.85%29.aspx) параметр fith отражает длину строки. Ты говоришь 16 здесь, однако, только 11.

Другие вопросы по тегам