-1

在win32 api中使用UNICODE和ANSI理解这一点我仍然有一些麻烦。

例如,我有这个代码:

SYSTEMTIME LocalTime = { 0 };
GetSystemTime (&LocalTime);
SetDlgItemText(hWnd, 1003, LocalTime);'

这会在标题中产生错误。

另外,我应该提到它可能会在“setdlgitemtext”之后自动添加一个 W VS 中的某个宏。

有人可以为我澄清一下吗?

4

1 回答 1

1

在 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);
于 2013-08-14T21:40:14.870 回答