使用TextOut()gdi函数LPCSTR参数的c ++问题

时间:2014-08-21 15:02:14

标签: c++ window 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#$%^&

和#$%^&部分实际上是其他方形符号,我不知道如何在键盘上写。据我所知,TextOut函数的第四个参数是LPCSTR类型,并且在我的字符串之后使用.c_str()函数应该正确输出LPCSTR变量,因此它会在程序运行时执行,但为什么我会得到#$% ^&安培;包含在Hello World的末尾,我该如何解决这个问题?我确实需要使用第二种方法而不是第一种方法,因为我的程序会生成字符串,然后我想输出到我的窗口。

1 个答案:

答案 0 :(得分:1)

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