gpt4 book ai didi

c++ - 在 win32 API 中将 int 转换为字符串

转载 作者:行者123 更新时间:2023-11-30 02:46:33 27 4
gpt4 key购买 nike

我正在尝试在我的窗口应用程序的客户区显示,例如系统本地时间。

结果我得到一个错误:IntelliSense:“CHAR *”类型的参数与 TextOut 函数(参数 4)中“LPCWSTR”类型的参数不兼容。有人可以帮助我吗?

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);
SYSTEMTIME lt;
GetLocalTime(&lt);
CHAR info[20] ;
_itoa(lt.wHour,info,16);
TextOut(hdc,200,200,info,strlen(info));
EndPaint(hWnd, &ps);}

break;

最佳答案

您正在为 Unicode 编译您的程序,这意味着对文本进行操作的 Win32 函数被映射到宽版本。所以 TextOut 是一个扩展为 TextOutW 的宏,需要 UTF-16 编码的 const wchar_t* 文本。但是您提供的是 8 位文本。

一个简单的解决方法是调用 TextOut 的 ANSI 版本,即 TextOutA

TextOutA(hdc, 200, 200, info, strlen(info));

但从长远来看,您可能会考虑坚持使用 native 范围的 API。这将要求您使用任何文本处理函数的广泛版本。您还可以避免 itoa 并开始使用标准 C++ 方法在文本和整数之间进行转换。

例如,使用 C++11,您可以使用 std::to_wstring .

std::wstring hour = std::to_wstring(lt.wHour);
TextOut(hdc, 200, 200, hour.c_str(), hour.length());

关于c++ - 在 win32 API 中将 int 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456804/

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