Я пытаюсь использовать функцию 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 # $% ^&
и # $% ^& часть на самом деле другие квадратные символы, которые я не уверен, как писать на клавиатуре. Я понимаю, что четвертый параметр функции TextOut имеет тип LPCSTR, и использование функции .c_str () после того, как моя строка должна правильно выводить переменную LPCSTR, и так происходит с момента запуска программы, однако почему я получаю # $% ^& включены в конце Hello World и как я могу решить эту проблему? Мне нужно использовать второй метод, а не первый, потому что моя программа будет генерировать строки, которые затем я хотел бы вывести в свое окно.
Согласно документации TextOut (http://msdn.microsoft.com/en-us/library/windows/desktop/dd145133%28v=vs.85%29.aspx) параметр fith отражает длину строки. Ты говоришь 16
здесь, однако, только 11.