1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include "StdAfx.h"
const std::locale GetSystemLocale()
{
return std::locale("");
}
tstring get_int_registry_value(LPCTSTR pszValueName)
{
tstring sResult;
HKEY hKey = nullptr;
LONG lResult = ::RegOpenKeyEx(HKEY_CURRENT_USER,
L"Control Panel\\International", 0, KEY_QUERY_VALUE, &hKey);
if ((ERROR_SUCCESS == lResult) && (nullptr != 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<wchar_t> aBuffer(dwSize);
lResult = ::RegQueryValueEx(hKey, pszValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(&*aBuffer.begin()), &dwSize);
if (ERROR_SUCCESS == lResult)
std::copy(aBuffer.begin(), aBuffer.end(), std::back_inserter(sResult));
}
}
if (nullptr != hKey) {
lResult = ::RegCloseKey(hKey);
assert(ERROR_SUCCESS == lResult);
}
return sResult;
}
LPCTSTR date_win_2_boost(const tstring& sFrmt)
{
if (sFrmt == L"dd/MM/yy")
return L"%d/%m/%y";
if (sFrmt == L"yyyy-MM-dd")
return L"%y-%m-%d";
return L"%d.%m.%y";
}
LPCTSTR time_win_2_boost(const tstring& sFrmt)
{
if (sFrmt == L"H:mm" || sFrmt == L"HH:mm")
return L"%H:%M";
return L"%H:%M:%S";
}
LPCTSTR CurrencyRates_GetDateFormat(bool bShort)
{
return date_win_2_boost(get_int_registry_value(bShort ? L"sShortDate" : L"sLongDate"));
}
LPCTSTR CurrencyRates_GetTimeFormat(bool bShort)
{
return time_win_2_boost(get_int_registry_value(bShort ? L"sShortTime" : L"sTimeFormat"));
}
|