0

我正在尝试使用 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 的末尾,我该如何解决这个问题?我确实需要使用第二种方法而不是第一种,因为我的程序将生成字符串,然后我想将其输出到我的窗口。

4

1 回答 1

1

根据 TextOut 的文档(http://msdn.microsoft.com/en-us/library/windows/desktop/dd145133%28v=vs.85%29.aspx), fith 参数反映了字符串的长度。你在16这里说,然而,它只有 11 点。

于 2014-08-21T15:05:09.963 回答