mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 16:20:37 +00:00
4f0b8d3db0
svn path=/branches/ntvdm/; revision=59241
635 lines
18 KiB
C
635 lines
18 KiB
C
/*
|
|
* ReactOS
|
|
* Copyright (C) 2004 ReactOS Team
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
/*
|
|
* PROJECT: ReactOS International Control Panel
|
|
* FILE: dll/cpl/intl/currency.c
|
|
* PURPOSE: Currency property page
|
|
* PROGRAMMER: Eric Kohl
|
|
*/
|
|
|
|
#include "intl.h"
|
|
|
|
#define POSITIVE_EXAMPLE _T("123456789.00")
|
|
#define NEGATIVE_EXAMPLE _T("-123456789.00")
|
|
#define MAX_FIELD_DIG_SAMPLES 3
|
|
|
|
|
|
static VOID
|
|
UpdateExamples(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
|
{
|
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
|
|
|
/* Positive example */
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
POSITIVE_EXAMPLE,
|
|
NULL, szBuffer, MAX_FMT_SIZE);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
|
|
|
/* Negative example */
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
NEGATIVE_EXAMPLE,
|
|
NULL, szBuffer, MAX_FMT_SIZE);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGSAMPLE), WM_SETTEXT, 0, (LPARAM)szBuffer);
|
|
}
|
|
|
|
|
|
static VOID
|
|
InitCurrencySymbols(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
|
{
|
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
|
|
|
/* Limit text length */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
|
CB_LIMITTEXT,
|
|
MAX_CURRENCYSYMBOL,
|
|
0);
|
|
|
|
/* Set currency symbols */
|
|
GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_SCURRENCY,
|
|
szBuffer, MAX_FMT_SIZE);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
|
CB_ADDSTRING,
|
|
0,
|
|
(LPARAM)szBuffer);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
|
CB_SETCURSEL,
|
|
0, /* Index */
|
|
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 */
|
|
cyFmt.LeadingZero = 0;
|
|
cyFmt.Grouping = 3;
|
|
cyFmt.lpDecimalSep = szDecimalSep;
|
|
cyFmt.lpThousandSep = szThousandSep;
|
|
cyFmt.lpCurrencySymbol = szCurrencySymbol;
|
|
cyFmt.NegativeOrder = 0;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
{
|
|
cyFmt.PositiveOrder = i;
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
_T("1.1"),
|
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE),
|
|
CB_INSERTSTRING,
|
|
-1,
|
|
(LPARAM)szBuffer);
|
|
}
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE),
|
|
CB_SETCURSEL,
|
|
nPositiveOrder,
|
|
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 */
|
|
cyFmt.LeadingZero = 0;
|
|
cyFmt.Grouping = 3;
|
|
cyFmt.lpDecimalSep = szDecimalSep;
|
|
cyFmt.lpThousandSep = szThousandSep;
|
|
cyFmt.lpCurrencySymbol = szCurrencySymbol;
|
|
cyFmt.PositiveOrder = 0;
|
|
|
|
for (i = 0; i < 16; i++)
|
|
{
|
|
cyFmt.NegativeOrder = i;
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
_T("-1.1"),
|
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE),
|
|
CB_INSERTSTRING,
|
|
-1,
|
|
(LPARAM)szBuffer);
|
|
}
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE),
|
|
CB_SETCURSEL,
|
|
nNegativeOrder,
|
|
0);
|
|
}
|
|
|
|
|
|
static VOID
|
|
InitCurrencyDecimalSeparators(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
|
{
|
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
|
|
|
/* Limit text length */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
|
CB_LIMITTEXT,
|
|
MAX_CURRENCYDECSEP,
|
|
0);
|
|
|
|
/* Get decimal separator */
|
|
GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_SMONDECIMALSEP,
|
|
szBuffer, MAX_FMT_SIZE);
|
|
|
|
/* Decimal separator */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
|
CB_ADDSTRING,
|
|
0,
|
|
(LPARAM)szBuffer);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
|
CB_SETCURSEL,
|
|
0, /* Index */
|
|
0);
|
|
}
|
|
|
|
|
|
/* Initialize the number of fractional digits */
|
|
static VOID
|
|
InitCurrencyNumFracDigits(HWND hwndDlg, PGLOBALDATA pGlobalData)
|
|
{
|
|
TCHAR szBuffer[MAX_FMT_SIZE];
|
|
int ret;
|
|
int i;
|
|
|
|
/* Create standard list of fractional symbols */
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
szBuffer[0] = _T('0') + i;
|
|
szBuffer[1] = 0;
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM),
|
|
CB_ADDSTRING,
|
|
0,
|
|
(LPARAM)szBuffer);
|
|
}
|
|
|
|
/* Get number of fractional digits */
|
|
ret = GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_ICURRDIGITS,
|
|
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];
|
|
|
|
/* Limit text length */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
|
CB_LIMITTEXT,
|
|
MAX_CURRENCYGRPSEP,
|
|
0);
|
|
|
|
/* Get group separator */
|
|
GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_SMONTHOUSANDSEP,
|
|
szBuffer, MAX_FMT_SIZE);
|
|
|
|
/* Digit group separator */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
|
CB_ADDSTRING,
|
|
0,
|
|
(LPARAM)szBuffer);
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
|
CB_SETCURSEL,
|
|
0, /* Index */
|
|
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 i;
|
|
|
|
/* Get group separator */
|
|
GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_SMONTHOUSANDSEP,
|
|
szThousandSep, MAX_FMT_SIZE);
|
|
|
|
/* Get grouping */
|
|
GetLocaleInfo(pGlobalData->lcid,
|
|
LOCALE_SMONGROUPING,
|
|
szGrouping, MAX_FMT_SIZE);
|
|
|
|
/* Digit grouping */
|
|
cyFmt.NumDigits = 0;
|
|
cyFmt.LeadingZero = 0;
|
|
cyFmt.lpDecimalSep = _T("");
|
|
cyFmt.lpThousandSep = szThousandSep;
|
|
cyFmt.PositiveOrder = 0;
|
|
cyFmt.NegativeOrder = 0;
|
|
cyFmt.lpCurrencySymbol = _T("");
|
|
cyFmt.Grouping = 0;
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
_T("123456789"),
|
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
|
CB_INSERTSTRING,
|
|
-1,
|
|
(LPARAM)szBuffer);
|
|
|
|
cyFmt.Grouping = 3;
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
_T("123456789"),
|
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
|
CB_INSERTSTRING,
|
|
-1,
|
|
(LPARAM)szBuffer);
|
|
|
|
cyFmt.Grouping = 32;
|
|
GetCurrencyFormat(pGlobalData->lcid, 0,
|
|
_T("123456789"),
|
|
&cyFmt, szBuffer, MAX_FMT_SIZE);
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
|
CB_INSERTSTRING,
|
|
-1,
|
|
(LPARAM)szBuffer);
|
|
|
|
i = 0;
|
|
if (szGrouping[0] == _T('3'))
|
|
{
|
|
if ((szGrouping[1] == _T(';')) &&
|
|
(szGrouping[2] == _T('2')))
|
|
i = 2;
|
|
else
|
|
i = 1;
|
|
}
|
|
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
|
CB_SETCURSEL,
|
|
i, /* Index */
|
|
0);
|
|
}
|
|
|
|
|
|
/* Set number of digits in field */
|
|
static BOOL
|
|
SetCurrencyDigNum(HWND hwndDlg, LCID lcid)
|
|
{
|
|
LPTSTR szFieldDigNumSamples[MAX_FIELD_DIG_SAMPLES]=
|
|
{
|
|
_T("0;0"),
|
|
_T("3;0"),
|
|
_T("3;2;0")
|
|
};
|
|
|
|
int nCurrSel;
|
|
|
|
/* Get setted number of digits in field */
|
|
nCurrSel = SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM),
|
|
CB_GETCURSEL,
|
|
(WPARAM)0,
|
|
(LPARAM)0);
|
|
|
|
/* Save number of digits in field */
|
|
if (nCurrSel != CB_ERR)
|
|
SetLocaleInfo(lcid, LOCALE_SMONGROUPING, szFieldDigNumSamples[nCurrSel]);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set currency field separator */
|
|
static BOOL
|
|
SetCurrencyFieldSep(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szCurrencyFieldSep[MAX_SAMPLES_STR_SIZE];
|
|
|
|
/* Get setted currency field separator */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP),
|
|
WM_GETTEXT,
|
|
(WPARAM)MAX_SAMPLES_STR_SIZE,
|
|
(LPARAM)szCurrencyFieldSep);
|
|
|
|
/* Save currency field separator */
|
|
SetLocaleInfo(lcid, LOCALE_SMONTHOUSANDSEP, szCurrencyFieldSep);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set number of fractional symbols */
|
|
static BOOL
|
|
SetCurrencyFracSymNum(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szCurrencyFracSymNum[MAX_SAMPLES_STR_SIZE];
|
|
INT nCurrSel;
|
|
|
|
/* Get setted number of fractional symbols */
|
|
nCurrSel = SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM),
|
|
CB_GETCURSEL,
|
|
(WPARAM)0,
|
|
(LPARAM)0);
|
|
|
|
/* Convert to wide char */
|
|
_itot(nCurrSel, szCurrencyFracSymNum, DECIMAL_RADIX);
|
|
|
|
/* Save number of fractional symbols */
|
|
SetLocaleInfo(lcid, LOCALE_ICURRDIGITS, szCurrencyFracSymNum);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set currency separator */
|
|
static BOOL
|
|
SetCurrencySep(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szCurrencySep[MAX_SAMPLES_STR_SIZE];
|
|
|
|
/* Get setted currency decimal separator */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP),
|
|
WM_GETTEXT,
|
|
(WPARAM)MAX_SAMPLES_STR_SIZE,
|
|
(LPARAM)szCurrencySep);
|
|
|
|
/* TODO: Add check for correctly input */
|
|
|
|
/* Save currency separator */
|
|
SetLocaleInfo(lcid, LOCALE_SMONDECIMALSEP, szCurrencySep);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set negative currency sum format */
|
|
static BOOL
|
|
SetNegCurrencySumFmt(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szNegCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
|
INT nCurrSel;
|
|
|
|
/* Get setted currency unit */
|
|
nCurrSel = SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE),
|
|
CB_GETCURSEL,
|
|
(WPARAM)0,
|
|
(LPARAM)0);
|
|
|
|
/* Convert to wide char */
|
|
_itot(nCurrSel, szNegCurrencySumFmt, DECIMAL_RADIX);
|
|
|
|
/* Save currency sum format */
|
|
SetLocaleInfo(lcid, LOCALE_INEGCURR, szNegCurrencySumFmt);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set positive currency sum format */
|
|
static BOOL
|
|
SetPosCurrencySumFmt(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szPosCurrencySumFmt[MAX_SAMPLES_STR_SIZE];
|
|
INT nCurrSel;
|
|
|
|
/* Get setted currency unit */
|
|
nCurrSel = SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE),
|
|
CB_GETCURSEL,
|
|
(WPARAM)0,
|
|
(LPARAM)0);
|
|
|
|
/* Convert to wide char */
|
|
_itot(nCurrSel, szPosCurrencySumFmt, DECIMAL_RADIX);
|
|
|
|
/* Save currency sum format */
|
|
SetLocaleInfo(lcid, LOCALE_ICURRENCY, szPosCurrencySumFmt);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Set currency unit */
|
|
static BOOL
|
|
SetCurrencyUnit(HWND hwndDlg, LCID lcid)
|
|
{
|
|
TCHAR szCurrencyUnit[MAX_SAMPLES_STR_SIZE];
|
|
|
|
/* Get setted currency unit */
|
|
SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL),
|
|
WM_GETTEXT,
|
|
(WPARAM)MAX_SAMPLES_STR_SIZE,
|
|
(LPARAM)(LPCSTR)szCurrencyUnit);
|
|
|
|
/* Save currency unit */
|
|
SetLocaleInfo(lcid, LOCALE_SCURRENCY, szCurrencyUnit);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* Property page dialog callback */
|
|
INT_PTR CALLBACK
|
|
CurrencyPageProc(HWND hwndDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam)
|
|
{
|
|
PGLOBALDATA pGlobalData;
|
|
|
|
pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
|
|
|
switch (uMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam;
|
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)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;
|
|
|
|
case WM_COMMAND:
|
|
switch (LOWORD(wParam))
|
|
{
|
|
case IDC_CURRENCYSYMBOL:
|
|
case IDC_CURRENCYPOSVALUE:
|
|
case IDC_CURRENCYNEGVALUE:
|
|
case IDC_CURRENCYDECSEP:
|
|
case IDC_CURRENCYDECNUM:
|
|
case IDC_CURRENCYGRPSEP:
|
|
case IDC_CURRENCYGRPNUM:
|
|
if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
|
|
{
|
|
/* Set "Apply" button enabled */
|
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WM_NOTIFY:
|
|
{
|
|
LPNMHDR lpnm = (LPNMHDR)lParam;
|
|
/* If push apply button */
|
|
if (lpnm->code == (UINT)PSN_APPLY)
|
|
{
|
|
if (!SetCurrencyDigNum(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetCurrencyUnit(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetPosCurrencySumFmt(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetNegCurrencySumFmt(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetCurrencySep(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetCurrencyFracSymNum(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
if (!SetCurrencyFieldSep(hwndDlg, pGlobalData->lcid))
|
|
break;
|
|
|
|
UpdateExamples(hwndDlg, pGlobalData);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* EOF */
|