gpt4 book ai didi

c++ - CreateWindowEx 显示中文乱码而不是原始文本

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:01 24 4
gpt4 key购买 nike

我有一个问题。我想记录我的工具开发,所以我不想在屏幕截图上绘制日期,而是想让窗口名称带有日期和时间数据。但我得到的不是字符串,而是中文字符。

gibberish

这是我要将字符串分配给 CreateWindowEx() 的代码:

char *wndName = "Asphyx V0.01 (Build Date: " __DATE__ " " __TIME__ ")\0";

hWnd = CreateWindowEx(NULL,
L"WindowClass",
(LPCWSTR)wndName,
WS_OVERLAPPEDWINDOW,
300,
300,
wr.right - wr.left,
wr.bottom - wr.top,
NULL,
NULL,
hInstance,
NULL);

编辑:伙计们,我感谢你的回答,但他们都给了我这个

Error 29 error C2308: concatenating mismatched strings  

唯一有点用的东西是一个尚未删除的答案,但它给了我这个:

enter image description here

他使用了这段代码:

char title[256];
sprintf(title, "Asphyx V0.01 (Build Date: %s - %s)", __DATE__, __TIME__);

hWnd = CreateWindowEx(NULL,
L"WindowClass",
title,
WS_OVERLAPPEDWINDOW,
300,
300,
wr.right - wr.left,
wr.bottom - wr.top,
NULL,
NULL,
hInstance,
NULL);

最佳答案

根据标准,如果其中一个字符串具有编码前缀,则字符串的其余部分将被视为具有相同的前缀。

Visual Studio 不是这种情况。这是一个错误。

您需要使用宽字符串,并在每个字符串文字前加上 L 前缀,包括宏:

#define WSTR2( s ) L##s
#define WSTR( s ) WSTR2( s )

wchar_t *wndName = L"Asphyx V0.01" WSTR(__DATE__) L" " WSTR(__TIME__) L")";

关于c++ - CreateWindowEx 显示中文乱码而不是原始文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600458/

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