mirror of
https://github.com/reactos/reactos.git
synced 2024-08-01 09:01:13 +00:00
Use the currently selected locale id instead of LOCALE_USER_DEFAULT to display and modify currency settings.
svn path=/trunk/; revision=29057
This commit is contained in:
parent
9960c6fc98
commit
3df1f13cd1
|
@ -37,140 +37,111 @@
|
||||||
#define MAX_FIELD_DIG_SAMPLES 3
|
#define MAX_FIELD_DIG_SAMPLES 3
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GLOBAL_DATA
|
|
||||||
{
|
|
||||||
TCHAR szCurrencySymbol[6];
|
|
||||||
TCHAR szDecimalSep[4];
|
|
||||||
TCHAR szThousandSep[4];
|
|
||||||
TCHAR szGrouping[10];
|
|
||||||
|
|
||||||
int PositiveOrder;
|
|
||||||
int NegativeOrder;
|
|
||||||
int NumDigits;
|
|
||||||
|
|
||||||
} GLOBAL_DATA, *PGLOBAL_DATA;
|
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
GetInitialCurrencyValues(PGLOBAL_DATA pGlobalData)
|
UpdateExamples(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
{
|
{
|
||||||
TCHAR szBuffer[MAX_FMT_SIZE];
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Get currency symbol */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_SCURRENCY,
|
|
||||||
pGlobalData->szCurrencySymbol, 6);
|
|
||||||
|
|
||||||
/* Get positive format */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_ICURRENCY,
|
|
||||||
szBuffer, MAX_FMT_SIZE);
|
|
||||||
if (ret != 0)
|
|
||||||
{
|
|
||||||
pGlobalData->PositiveOrder = _ttoi(szBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get negative format */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_INEGCURR,
|
|
||||||
szBuffer, MAX_FMT_SIZE);
|
|
||||||
if (ret != 0)
|
|
||||||
{
|
|
||||||
pGlobalData->NegativeOrder = _ttoi(szBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get number of fractional digits */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_ICURRDIGITS,
|
|
||||||
szBuffer, MAX_FMT_SIZE);
|
|
||||||
if (ret != 0)
|
|
||||||
{
|
|
||||||
pGlobalData->NumDigits = _ttoi(szBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get decimal separator */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_SMONDECIMALSEP,
|
|
||||||
pGlobalData->szDecimalSep, 4);
|
|
||||||
|
|
||||||
/* Get group separator */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_SMONTHOUSANDSEP,
|
|
||||||
pGlobalData->szThousandSep, 4);
|
|
||||||
|
|
||||||
/* Get grouping */
|
|
||||||
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
|
|
||||||
LOCALE_SMONGROUPING,
|
|
||||||
pGlobalData->szGrouping, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
|
||||||
UpdateExamples(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
|
||||||
{
|
|
||||||
TCHAR szBuffer[MAX_FMT_SIZE];
|
|
||||||
CURRENCYFMT cyFmt;
|
|
||||||
|
|
||||||
cyFmt.NumDigits = pGlobalData->NumDigits;
|
|
||||||
cyFmt.LeadingZero = 0;
|
|
||||||
cyFmt.Grouping = 3;
|
|
||||||
cyFmt.lpDecimalSep = pGlobalData->szDecimalSep;
|
|
||||||
cyFmt.lpThousandSep = pGlobalData->szThousandSep;
|
|
||||||
cyFmt.PositiveOrder = pGlobalData->PositiveOrder;
|
|
||||||
cyFmt.NegativeOrder = pGlobalData->NegativeOrder;
|
|
||||||
cyFmt.lpCurrencySymbol = pGlobalData->szCurrencySymbol;
|
|
||||||
|
|
||||||
/* positive example */
|
/* positive example */
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
POSITIVE_EXAMPLE,
|
POSITIVE_EXAMPLE,
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
NULL, szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
|
|
||||||
/* negative example */
|
/* negative example */
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
NEGATIVE_EXAMPLE,
|
NEGATIVE_EXAMPLE,
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
NULL, szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
InitCurrencySymbols(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
{
|
{
|
||||||
TCHAR szBuffer[MAX_FMT_SIZE];
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
CURRENCYFMT cyFmt;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
GetInitialCurrencyValues(pGlobalData);
|
/* Set currency symbols */
|
||||||
|
GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SCURRENCY,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* Set currency symbol */
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
||||||
CB_ADDSTRING,
|
CB_ADDSTRING,
|
||||||
0,
|
0,
|
||||||
(LPARAM)pGlobalData->szCurrencySymbol);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
0, /* index */
|
0, /* index */
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
InitCurrencyPositiveFormats(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szDecimalSep[MAX_FMT_SIZE];
|
||||||
|
TCHAR szThousandSep[MAX_FMT_SIZE];
|
||||||
|
TCHAR szCurrencySymbol[MAX_FMT_SIZE];
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
CURRENCYFMT cyFmt;
|
||||||
|
INT nPositiveOrder = 0;
|
||||||
|
INT ret;
|
||||||
|
INT i;
|
||||||
|
|
||||||
|
|
||||||
|
/* Get positive format */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_ICURRENCY,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
nPositiveOrder = _ttoi(szBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get number of fractional digits */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_ICURRDIGITS,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
cyFmt.NumDigits = _ttoi(szBuffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cyFmt.NumDigits = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get decimal separator */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONDECIMALSEP,
|
||||||
|
szDecimalSep, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
/* Get group separator */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONTHOUSANDSEP,
|
||||||
|
szThousandSep, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
/* Get currency symbol */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SCURRENCY,
|
||||||
|
szCurrencySymbol, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* positive currency values */
|
/* positive currency values */
|
||||||
cyFmt.NumDigits = pGlobalData->NumDigits;
|
|
||||||
cyFmt.LeadingZero = 0;
|
cyFmt.LeadingZero = 0;
|
||||||
cyFmt.Grouping = 3;
|
cyFmt.Grouping = 3;
|
||||||
cyFmt.lpDecimalSep = pGlobalData->szDecimalSep;
|
cyFmt.lpDecimalSep = szDecimalSep;
|
||||||
cyFmt.lpThousandSep = pGlobalData->szThousandSep;
|
cyFmt.lpThousandSep = szThousandSep;
|
||||||
|
cyFmt.lpCurrencySymbol = szCurrencySymbol;
|
||||||
cyFmt.NegativeOrder = 0;
|
cyFmt.NegativeOrder = 0;
|
||||||
cyFmt.lpCurrencySymbol = pGlobalData->szCurrencySymbol;
|
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
cyFmt.PositiveOrder = i;
|
cyFmt.PositiveOrder = i;
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
_T("1.1"),
|
_T("1.1"),
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
@ -182,15 +153,72 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE),
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
pGlobalData->PositiveOrder,
|
nPositiveOrder,
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
InitCurrencyNegativeFormats(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szDecimalSep[MAX_FMT_SIZE];
|
||||||
|
TCHAR szThousandSep[MAX_FMT_SIZE];
|
||||||
|
TCHAR szCurrencySymbol[MAX_FMT_SIZE];
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
CURRENCYFMT cyFmt;
|
||||||
|
INT nNegativeOrder = 0;
|
||||||
|
INT ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Get negative format */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_INEGCURR,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
nNegativeOrder = _ttoi(szBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get number of fractional digits */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_ICURRDIGITS,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
cyFmt.NumDigits = _ttoi(szBuffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cyFmt.NumDigits = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get decimal separator */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONDECIMALSEP,
|
||||||
|
szDecimalSep, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
/* Get group separator */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONTHOUSANDSEP,
|
||||||
|
szThousandSep, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
/* Get currency symbol */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SCURRENCY,
|
||||||
|
szCurrencySymbol, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* negative currency values */
|
/* negative currency values */
|
||||||
|
cyFmt.LeadingZero = 0;
|
||||||
|
cyFmt.Grouping = 3;
|
||||||
|
cyFmt.lpDecimalSep = szDecimalSep;
|
||||||
|
cyFmt.lpThousandSep = szThousandSep;
|
||||||
|
cyFmt.lpCurrencySymbol = szCurrencySymbol;
|
||||||
cyFmt.PositiveOrder = 0;
|
cyFmt.PositiveOrder = 0;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
cyFmt.NegativeOrder = i;
|
cyFmt.NegativeOrder = i;
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
_T("-1.1"),
|
_T("-1.1"),
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
@ -202,19 +230,41 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE),
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
pGlobalData->NegativeOrder, /* index */
|
nNegativeOrder,
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
InitCurrencyDecimalSeparators(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
|
||||||
|
/* Get decimal separator */
|
||||||
|
GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONDECIMALSEP,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* decimal separator */
|
/* decimal separator */
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
||||||
CB_ADDSTRING,
|
CB_ADDSTRING,
|
||||||
0,
|
0,
|
||||||
(LPARAM)pGlobalData->szDecimalSep);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
0, /* index */
|
0, /* index */
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize the number of fractional digits */
|
||||||
|
static VOID
|
||||||
|
InitCurrencyNumFracDigits(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
int ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 10; i++)
|
||||||
|
@ -227,32 +277,80 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
(LPARAM)szBuffer);
|
(LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM),
|
/* Get number of fractional digits */
|
||||||
CB_SETCURSEL,
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
pGlobalData->NumDigits, /* index */
|
LOCALE_ICURRDIGITS,
|
||||||
0);
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM),
|
||||||
|
CB_SETCURSEL,
|
||||||
|
_ttoi(szBuffer),
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM),
|
||||||
|
CB_SETCURSEL,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize the list of group separators */
|
||||||
|
static VOID
|
||||||
|
InitCurrencyGroupSeparators(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
|
||||||
|
/* Get group separator */
|
||||||
|
GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONTHOUSANDSEP,
|
||||||
|
szBuffer, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* digit group separator */
|
/* digit group separator */
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
||||||
CB_ADDSTRING,
|
CB_ADDSTRING,
|
||||||
0,
|
0,
|
||||||
(LPARAM)pGlobalData->szThousandSep);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
0, /* index */
|
0, /* index */
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
InitDigitGroupCB(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
||||||
|
{
|
||||||
|
TCHAR szThousandSep[MAX_FMT_SIZE];
|
||||||
|
TCHAR szGrouping[MAX_FMT_SIZE];
|
||||||
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
||||||
|
CURRENCYFMT cyFmt;
|
||||||
|
INT ret;
|
||||||
|
INT i;
|
||||||
|
|
||||||
|
/* Get group separator */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONTHOUSANDSEP,
|
||||||
|
szThousandSep, MAX_FMT_SIZE);
|
||||||
|
|
||||||
|
/* Get grouping */
|
||||||
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
||||||
|
LOCALE_SMONGROUPING,
|
||||||
|
szGrouping, MAX_FMT_SIZE);
|
||||||
|
|
||||||
/* digit grouping */
|
/* digit grouping */
|
||||||
cyFmt.NumDigits = 0;
|
cyFmt.NumDigits = 0;
|
||||||
cyFmt.LeadingZero = 0;
|
cyFmt.LeadingZero = 0;
|
||||||
cyFmt.lpDecimalSep = _T("");
|
cyFmt.lpDecimalSep = _T("");
|
||||||
cyFmt.lpThousandSep = pGlobalData->szThousandSep;
|
cyFmt.lpThousandSep = szThousandSep;
|
||||||
cyFmt.NegativeOrder = 0;
|
cyFmt.NegativeOrder = 0;
|
||||||
cyFmt.lpCurrencySymbol = _T("");
|
cyFmt.lpCurrencySymbol = _T("");
|
||||||
cyFmt.Grouping = 0;
|
cyFmt.Grouping = 0;
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
_T("123456789"),
|
_T("123456789"),
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
||||||
|
@ -261,7 +359,7 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
(LPARAM)szBuffer);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
cyFmt.Grouping = 3;
|
cyFmt.Grouping = 3;
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
_T("123456789"),
|
_T("123456789"),
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
||||||
|
@ -270,7 +368,7 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
(LPARAM)szBuffer);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
cyFmt.Grouping = 32;
|
cyFmt.Grouping = 32;
|
||||||
GetCurrencyFormat(LOCALE_USER_DEFAULT, 0,
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
||||||
_T("123456789"),
|
_T("123456789"),
|
||||||
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
||||||
|
@ -279,10 +377,10 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
(LPARAM)szBuffer);
|
(LPARAM)szBuffer);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
if (pGlobalData->szGrouping[0] == _T('3'))
|
if (szGrouping[0] == _T('3'))
|
||||||
{
|
{
|
||||||
if ((pGlobalData->szGrouping[1] == _T(';')) &&
|
if ((szGrouping[1] == _T(';')) &&
|
||||||
(pGlobalData->szGrouping[2] == _T('2')))
|
(szGrouping[2] == _T('2')))
|
||||||
i = 2;
|
i = 2;
|
||||||
else
|
else
|
||||||
i = 1;
|
i = 1;
|
||||||
|
@ -292,14 +390,12 @@ OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
CB_SETCURSEL,
|
CB_SETCURSEL,
|
||||||
i, /* index */
|
i, /* index */
|
||||||
0);
|
0);
|
||||||
|
|
||||||
/* Show the examples */
|
|
||||||
UpdateExamples(hwndDlg, pGlobalData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Set number of digidts in field */
|
/* Set number of digidts in field */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetCurrencyDigNum(HWND hwndDlg)
|
SetCurrencyDigNum(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
LPTSTR szFieldDigNumSamples[MAX_FIELD_DIG_SAMPLES]=
|
LPTSTR szFieldDigNumSamples[MAX_FIELD_DIG_SAMPLES]=
|
||||||
{
|
{
|
||||||
|
@ -317,14 +413,14 @@ SetCurrencyDigNum(HWND hwndDlg)
|
||||||
(LPARAM)0);
|
(LPARAM)0);
|
||||||
|
|
||||||
/* Save number of digidts in field */
|
/* Save number of digidts in field */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONGROUPING, szFieldDigNumSamples[nCurrSel]);
|
SetLocaleInfo(lcid, LOCALE_SMONGROUPING, szFieldDigNumSamples[nCurrSel]);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set currency field separator */
|
/* Set currency field separator */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetCurrencyFieldSep(HWND hwndDlg)
|
SetCurrencyFieldSep(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szCurrencyFieldSep[MAX_SAMPLES_STR_SIZE];
|
TCHAR szCurrencyFieldSep[MAX_SAMPLES_STR_SIZE];
|
||||||
|
|
||||||
|
@ -335,14 +431,14 @@ SetCurrencyFieldSep(HWND hwndDlg)
|
||||||
(LPARAM)szCurrencyFieldSep);
|
(LPARAM)szCurrencyFieldSep);
|
||||||
|
|
||||||
/* Save currency field separator */
|
/* Save currency field separator */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONTHOUSANDSEP, szCurrencyFieldSep);
|
SetLocaleInfo(lcid, LOCALE_SMONTHOUSANDSEP, szCurrencyFieldSep);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set number of fractional symbols */
|
/* Set number of fractional symbols */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetCurrencyFracSymNum(HWND hwndDlg)
|
SetCurrencyFracSymNum(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szCurrencyFracSymNum[MAX_SAMPLES_STR_SIZE];
|
TCHAR szCurrencyFracSymNum[MAX_SAMPLES_STR_SIZE];
|
||||||
INT nCurrSel;
|
INT nCurrSel;
|
||||||
|
@ -357,14 +453,14 @@ SetCurrencyFracSymNum(HWND hwndDlg)
|
||||||
_itot(nCurrSel, szCurrencyFracSymNum, DECIMAL_RADIX);
|
_itot(nCurrSel, szCurrencyFracSymNum, DECIMAL_RADIX);
|
||||||
|
|
||||||
/* Save number of fractional symbols */
|
/* Save number of fractional symbols */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ICURRDIGITS, szCurrencyFracSymNum);
|
SetLocaleInfo(lcid, LOCALE_ICURRDIGITS, szCurrencyFracSymNum);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set currency separator */
|
/* Set currency separator */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetCurrencySep(HWND hwndDlg)
|
SetCurrencySep(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szCurrencySep[MAX_SAMPLES_STR_SIZE];
|
TCHAR szCurrencySep[MAX_SAMPLES_STR_SIZE];
|
||||||
|
|
||||||
|
@ -377,14 +473,14 @@ SetCurrencySep(HWND hwndDlg)
|
||||||
/* TODO: Add check for correctly input */
|
/* TODO: Add check for correctly input */
|
||||||
|
|
||||||
/* Save currency separator */
|
/* Save currency separator */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, szCurrencySep);
|
SetLocaleInfo(lcid, LOCALE_SMONDECIMALSEP, szCurrencySep);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set negative currency sum format */
|
/* Set negative currency sum format */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetNegCurrencySumFmt(HWND hwndDlg)
|
SetNegCurrencySumFmt(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szNegCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
TCHAR szNegCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
||||||
INT nCurrSel;
|
INT nCurrSel;
|
||||||
|
@ -399,14 +495,14 @@ SetNegCurrencySumFmt(HWND hwndDlg)
|
||||||
_itot(nCurrSel, szNegCurrencySumFmt, DECIMAL_RADIX);
|
_itot(nCurrSel, szNegCurrencySumFmt, DECIMAL_RADIX);
|
||||||
|
|
||||||
/* Save currency sum format */
|
/* Save currency sum format */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_INEGCURR, szNegCurrencySumFmt);
|
SetLocaleInfo(lcid, LOCALE_INEGCURR, szNegCurrencySumFmt);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set positive currency sum format */
|
/* Set positive currency sum format */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetPosCurrencySumFmt(HWND hwndDlg)
|
SetPosCurrencySumFmt(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szPosCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
TCHAR szPosCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
||||||
INT nCurrSel;
|
INT nCurrSel;
|
||||||
|
@ -421,14 +517,14 @@ SetPosCurrencySumFmt(HWND hwndDlg)
|
||||||
_itot(nCurrSel, szPosCurrencySumFmt, DECIMAL_RADIX);
|
_itot(nCurrSel, szPosCurrencySumFmt, DECIMAL_RADIX);
|
||||||
|
|
||||||
/* Save currency sum format */
|
/* Save currency sum format */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ICURRENCY, szPosCurrencySumFmt);
|
SetLocaleInfo(lcid, LOCALE_ICURRENCY, szPosCurrencySumFmt);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set currency unit */
|
/* Set currency unit */
|
||||||
static BOOL
|
static BOOL
|
||||||
SetCurrencyUnit(HWND hwndDlg)
|
SetCurrencyUnit(HWND hwndDlg, LCID lcid)
|
||||||
{
|
{
|
||||||
TCHAR szCurrencyUnit[MAX_SAMPLES_STR_SIZE];
|
TCHAR szCurrencyUnit[MAX_SAMPLES_STR_SIZE];
|
||||||
|
|
||||||
|
@ -439,7 +535,7 @@ SetCurrencyUnit(HWND hwndDlg)
|
||||||
(LPARAM)(LPCSTR)szCurrencyUnit);
|
(LPARAM)(LPCSTR)szCurrencyUnit);
|
||||||
|
|
||||||
/* Save currency unit */
|
/* Save currency unit */
|
||||||
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, szCurrencyUnit);
|
SetLocaleInfo(lcid, LOCALE_SCURRENCY, szCurrencyUnit);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -451,16 +547,24 @@ CurrencyPageProc(HWND hwndDlg,
|
||||||
WPARAM wParam,
|
WPARAM wParam,
|
||||||
LPARAM lParam)
|
LPARAM lParam)
|
||||||
{
|
{
|
||||||
PGLOBAL_DATA pGlobalData;
|
PGLOBALDATA pGlobalData;
|
||||||
|
|
||||||
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
||||||
OnInitDialog(hwndDlg, pGlobalData);
|
|
||||||
|
InitCurrencySymbols(hwndDlg, pGlobalData);
|
||||||
|
InitCurrencyPositiveFormats(hwndDlg, pGlobalData);
|
||||||
|
InitCurrencyNegativeFormats(hwndDlg, pGlobalData);
|
||||||
|
InitCurrencyDecimalSeparators(hwndDlg, pGlobalData);
|
||||||
|
InitCurrencyNumFracDigits(hwndDlg, pGlobalData);
|
||||||
|
InitCurrencyGroupSeparators(hwndDlg, pGlobalData);
|
||||||
|
InitDigitGroupCB(hwndDlg, pGlobalData);
|
||||||
|
UpdateExamples(hwndDlg, pGlobalData);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
|
@ -487,35 +591,31 @@ CurrencyPageProc(HWND hwndDlg,
|
||||||
/* If push apply button */
|
/* If push apply button */
|
||||||
if (lpnm->code == (UINT)PSN_APPLY)
|
if (lpnm->code == (UINT)PSN_APPLY)
|
||||||
{
|
{
|
||||||
if (!SetCurrencyDigNum(hwndDlg))
|
if (!SetCurrencyDigNum(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetCurrencyUnit(hwndDlg))
|
if (!SetCurrencyUnit(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetPosCurrencySumFmt(hwndDlg))
|
if (!SetPosCurrencySumFmt(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetNegCurrencySumFmt(hwndDlg))
|
if (!SetNegCurrencySumFmt(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetCurrencySep(hwndDlg))
|
if (!SetCurrencySep(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetCurrencyFracSymNum(hwndDlg))
|
if (!SetCurrencyFracSymNum(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!SetCurrencyFieldSep(hwndDlg))
|
if (!SetCurrencyFieldSep(hwndDlg, pGlobalData->lcid))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
UpdateExamples(hwndDlg, pGlobalData);
|
UpdateExamples(hwndDlg, pGlobalData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_DESTROY:
|
|
||||||
HeapFree(GetProcessHeap(), 0, pGlobalData);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
Loading…
Reference in a new issue