在win32 api中使用UNICODE和ANSI理解这一点我仍然有一些麻烦。
例如,我有这个代码:
SYSTEMTIME LocalTime = { 0 };
GetSystemTime (&LocalTime);
SetDlgItemText(hWnd, 1003, LocalTime);'
这会在标题中产生错误。
另外,我应该提到它可能会在“setdlgitemtext”之后自动添加一个 W VS 中的某个宏。
有人可以为我澄清一下吗?
在 C 或 C++ 中,您不能只采用任意结构并将其传递给需要字符串的函数。您必须先将该结构转换为字符串。
Win32 函数GetDateFormat()
可GetTimeFormat()
用于SYSTEMTIME
根据当前系统区域设置规则将 a 转换为字符串(第一个执行“日期”部分,第二个执行“时间”部分)。
例如,
SYSTEMTIME LocalTime = { 0 };
GetSystemTime (&LocalTime);
wchar_t wchBuf[80];
GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &LocalTime, NULL, wchBuf, sizeof(wchBuf) / sizeof(wchBuf[0]));
SetDlgItemText(hWnd, 1003, wchBuf);