#include "StdAfx.h" #include "Locale.h" const std::locale GetSystemLocale() { return std::locale(""); } namespace { tstring get_int_registry_value(LPCTSTR pszValueName) { tstring sResult; HKEY hKey = NULL; LONG lResult = ::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Control Panel\\International"),0,KEY_QUERY_VALUE,&hKey); if ((ERROR_SUCCESS == lResult) && (NULL != hKey)) { DWORD dwType = 0; DWORD dwSize = 0; lResult = ::RegQueryValueEx(hKey,pszValueName,nullptr,&dwType,nullptr,&dwSize); if ((ERROR_SUCCESS == lResult) && ((REG_SZ == dwType) || (REG_EXPAND_SZ == dwType))) { std::vector aBuffer(dwSize); lResult = ::RegQueryValueEx(hKey,pszValueName,nullptr,nullptr,reinterpret_cast(&*aBuffer.begin()),&dwSize); if(ERROR_SUCCESS == lResult) { std::copy(aBuffer.begin(),aBuffer.end(),std::back_inserter(sResult)); } } } if(NULL != hKey) { lResult = ::RegCloseKey(hKey); assert(ERROR_SUCCESS == lResult); } return sResult; } tstring date_win_2_boost(const tstring& sFrmt) { tstring sResult(_T("%d.%m.%y")); if(sFrmt == _T("dd/MM/yy")) { sResult = _T("%d/%m/%y"); } else if(sFrmt == _T("yyyy-MM-dd")) { sResult = _T("%y-%m-%d"); } return sResult; } tstring time_win_2_boost(const tstring& sFrmt) { tstring sResult = _T("%H:%M:%S"); if(sFrmt == _T("H:mm") || sFrmt == _T("HH:mm")) { sResult = _T("%H:%M"); } return sResult; } } tstring Quotes_GetDateFormat(bool bShort) { return date_win_2_boost(get_int_registry_value(bShort ? _T("sShortDate") : _T("sLongDate"))); } tstring Quotes_GetTimeFormat(bool bShort) { return time_win_2_boost(get_int_registry_value(bShort ? _T("sShortTime") : _T("sTimeFormat"))); }