我已经在控制面板(Windows 7)中的区域和本地设置中调整了一周的第一天,现在我正在编写一个C ++函数,它必须返回我调整过的第一天的第一天。 我可以使用任何Windows API或标准c ++函数吗?
答案 0 :(得分:3)
(抱歉我写的完全错了。我已经更新了帖子。)
正确使用的功能是EnumCalendarInfoExEx:
#include <Windows.h>
#include <strsafe.h>
#include <iostream>
using namespace std;
BOOL CALLBACK EnumCalendarInfoProcExEx(LPWSTR lpszInfo, CALID calendar, LPWSTR lpReserved, LPARAM lParam)
{
StringCchCopy(reinterpret_cast<LPWSTR>(lParam), 64, lpszInfo);
return FALSE;
}
int main()
{
WCHAR szDay[64];
BOOL bResult = ::EnumCalendarInfoExEx(
&EnumCalendarInfoProcExEx,
LOCALE_NAME_USER_DEFAULT,
ENUM_ALL_CALENDARS,
nullptr,
CAL_SDAYNAME1,
reinterpret_cast<LPARAM>(szDay)
);
if (!bResult)
{
wcout << L"Error" << endl;
return 0;
}
wcout << szDay << endl;
return 0;
}
需要注意的几件事情:
答案 1 :(得分:0)
我尝试使用GetLocaleInfoEx Windows API并且运行良好:)
int GetSystemStartDayOfWeek()
{
int ret;
DWORD StartDayOfWeek;
ret = GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT,
LOCALE_IFIRSTDAYOFWEEK | LOCALE_RETURN_NUMBER,
(LPTSTR)&StartDayOfWeek,
sizeof(StartDayOfWeek) / sizeof(TCHAR));
return StartDayOfWeek;
}