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