TextOut() gdi 函数 LPCSTR 参数的 C++ 问题

标签 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 变量,自程序运行以来它也是如此,但是为什么我得到 teh #$% ^& 包含在 Hello World 的末尾,我该如何解决这个问题?我确实需要使用第二种方法而不是第一种方法,因为我的程序将生成字符串,然后我想将其输出到我的窗口。

最佳答案

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

关于TextOut() gdi 函数 LPCSTR 参数的 C++ 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25429722/

相关文章:

c++ - std::move 两个双端队列 - 输入与输出迭代器

C++ 移入容器

node.js - 使用 NSSM 制作 node.js 服务

c++ - 如何使用 GDI 绘制透明文本?

c++ - 使用 Visual C++ 在桌面上绘图

c++ - Eclipse CDT : Symbol 'cout' could not be resolved

c++ - 打开终端 : unknown Qt Creator on MacOs 10. 12.4 时出错

docker - Windows上的Docker与守护程序相关的错误

c++ - 如何在SDL2中获取窗口的客户区大小

windows - 使用自定义笔样式在 win32/GDI 中绘制线条?