gpt4 book ai didi

c++ - Win32编程 TextOut WM_Paint

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:33 27 4
gpt4 key购买 nike

在 TextOut 行的这段代码中遇到一些问题,它说:

error: cannot convert 'std::string* {aka std::basic_string<char>*}' to 
'LPCSTR {aka const char*}' for argument 4 to
'BOOL TextOutA(HDC, int, int, LPCSTR, int)'

我已经搜索了一段时间,但没能找到任何既不会永远让我感到困惑,也不会完成我想做的事情的东西,那就是绘制一个字符串。

case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
string text = "Something";

RECT rect;
GetClientRect( hwnd, &rect );
hdc = BeginPaint( hwnd, &ps );

TextOut( hdc, rect.right/2, rect.bottom/2, &text, 1 );

EndPaint( hwnd, &ps );
}
return 0;
break;

最佳答案

错误消息解释了问题所在:

LPCSTR类型是 typedef(别名)const char * .这是一个C风格的指针,也就是常量字符串"Something"默认为(但不是 text )。

std::string类型是 typedef(别名)std::basic_string<char> .这是一个 C++ 模板类,用于动态管理字符串,如 C#/Java 字符串或 CString从 MFC/ATL 类型。

&text line 是指向字符串对象的指针,而不是指向字符串本身的指针。同样,std::string不提供对 const char * 的隐式转换.您需要显式调用 text.c_str()它旨在与采用 C 风格字符串的 API 一起使用。

对于 TextOut 的最后一个参数, 你可以通过 -1让它计算字符串的长度(不是 1 )。或者,因为您在 std::string 中有字符串对象,您可以使用 text.size() .

关于c++ - Win32编程 TextOut WM_Paint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com