예제 #1
0
파일: currency.c 프로젝트: RPG-7/reactos
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);
}
예제 #2
0
/* Update all locale samples */
static VOID
UpdateLocaleSample(HWND hwndDlg, LCID lcidLocale)
{
    TCHAR OutBuffer[MAX_SAMPLES_STR_SIZE];

    /* Get number format sample */
    GetNumberFormat(lcidLocale, NO_FLAG, SAMPLE_NUMBER, NULL, OutBuffer,
                    MAX_SAMPLES_STR_SIZE);
    SendMessage(GetDlgItem(hwndDlg, IDC_NUMSAMPLE_EDIT),
                 WM_SETTEXT, 0, (LPARAM)OutBuffer);

    /* Get monetary format sample */
    GetCurrencyFormat(lcidLocale, LOCALE_USE_CP_ACP, SAMPLE_NUMBER, NULL,
                      OutBuffer, MAX_SAMPLES_STR_SIZE);
    SendMessage(GetDlgItem(hwndDlg, IDC_MONEYSAMPLE_EDIT),
                 WM_SETTEXT, 0, (LPARAM)OutBuffer);

    /* Get time format sample */
    GetTimeFormat(lcidLocale, NO_FLAG, NULL, NULL, OutBuffer, MAX_SAMPLES_STR_SIZE);
    SendMessage(GetDlgItem(hwndDlg, IDC_TIMESAMPLE_EDIT),
        WM_SETTEXT,
        0,
        (LPARAM)OutBuffer);

    /* Get short date format sample */
    GetDateFormat(lcidLocale, DATE_SHORTDATE, NULL, NULL, OutBuffer,
        MAX_SAMPLES_STR_SIZE);
    SendMessage(GetDlgItem(hwndDlg, IDC_SHORTTIMESAMPLE_EDIT), WM_SETTEXT,
        0, (LPARAM)OutBuffer);

    /* Get long date sample */
    GetDateFormat(lcidLocale, DATE_LONGDATE, NULL, NULL, OutBuffer,
        MAX_SAMPLES_STR_SIZE);
    SendMessage(GetDlgItem(hwndDlg, IDC_FULLTIMESAMPLE_EDIT),
        WM_SETTEXT, 0, (LPARAM)OutBuffer);
}
예제 #3
0
///////////////////////////////////////////////////////////////////////////////////////////
//  Function:       InitNLSFields
//
//  Description:    Initialize NLS formatting fields for a given LCID
//
//  Comments:
//
///////////////////////////////////////////////////////////////////////////////////////////
void InitNLSFields(HWND hDlg, LCID lcid)
{
    TCHAR   tcsTemp[MAX_STR];
    HWND    hList = NULL;

    // Init larg number fields...
    LoadString(g_hInst, STR_LARGEPOSNUMBER, g_tcsTemp, MAX_STR);
    GetNumberFormat(lcid, 0, g_tcsTemp, NULL, tcsTemp, MAX_STR);
    SetWindowText(GetDlgItem(hDlg, IDC_POS_NUMBER), tcsTemp);

    LoadString(g_hInst, STR_LARGENEGNUMBER, g_tcsTemp, MAX_STR);
    GetNumberFormat(lcid, 0, g_tcsTemp, NULL, tcsTemp, MAX_STR);
    SetWindowText(GetDlgItem(hDlg, IDC_NEG_NUMBER), tcsTemp);

    // Init the currency field format...
    LoadString(g_hInst, STR_LARGEPOSNUMBER, g_tcsTemp, MAX_STR);
    GetCurrencyFormat(lcid, 0, g_tcsTemp, NULL, tcsTemp, MAX_STR);
    SetWindowText(GetDlgItem(hDlg, IDC_POS_CURRENCY), tcsTemp);

    LoadString(g_hInst, STR_LARGENEGNUMBER, g_tcsTemp, MAX_STR);
    GetCurrencyFormat(lcid, 0, g_tcsTemp, NULL, tcsTemp, MAX_STR);
    SetWindowText(GetDlgItem(hDlg, IDC_NEG_CURRENCY), tcsTemp);

    // Init time field format...
    // Delete our previous list of items...
    hList = GetDlgItem(g_hDlg, IDC_TIMEFORMAT);
    if(NULL != hList)
    {
        SendMessage(hList, CB_RESETCONTENT , 0, 0);

        // Enumerates the time formats that are available for a specified locale.
        EnumTimeFormats(EnumTimeFormatsProc, lcid, 0);
        SendMessage(hList, CB_SETCURSEL, 0, 0);          // item index
        SendMessage(hList, CB_GETLBTEXT, 0, (LPARAM) g_tcsTemp);
        GetTimeFormat(lcid, 0, NULL, g_tcsTemp, tcsTemp, MAX_STR);
        SetWindowText(GetDlgItem(hDlg, IDC_TIMESAMPLE), tcsTemp);
    }

    // Init calendar field format...
    // Delete our previous list of items...
    hList = GetDlgItem(g_hDlg, IDC_CALFORMAT);
    if(NULL != hList)
    {
        SendMessage(hList, CB_RESETCONTENT , 0, 0);

        // Enumerates the short date formats that are available for a specified locale.
        EnumCalendarInfo(EnumCalendarInfoProc, lcid, ENUM_ALL_CALENDARS, CAL_SCALNAME);
        SendMessage(hList, CB_SETCURSEL, 0, 0);          // item index
        SendMessage(hList, CB_GETLBTEXT, 0, (LPARAM) g_tcsTemp);
    }

    // Init short date field format...
    // Delete our previous list of items...
    hList = GetDlgItem(g_hDlg, IDC_SDATEFORMAT);
    if(NULL != hList)
    {
        SendMessage(hList, CB_RESETCONTENT , 0, 0);

        // Enumerates the short date formats that are available for a specified locale.
        EnumDateFormats(EnumSDateFormatsProc, lcid, DATE_SHORTDATE);
        SendMessage(hList, CB_SETCURSEL, 0, 0);          // item index
        SendMessage(hList, CB_GETLBTEXT, 0, (LPARAM) g_tcsTemp);
        GetDateFormat(lcid, 0, NULL, g_tcsTemp, tcsTemp, MAX_STR);
        SetWindowText(GetDlgItem(hDlg, IDC_SDATESAMPLE), tcsTemp);
    }

    // Init long date field format...
    // Delete our previous list of items...
    hList = GetDlgItem(g_hDlg, IDC_LDATEFORMAT);
    if(NULL != hList)
    {
        SendMessage(hList, CB_RESETCONTENT , 0, 0);

        // Enumerates the long date formats that are available for a specified locale
        EnumDateFormats(EnumLDateFormatsProc, lcid, DATE_LONGDATE);
        SendMessage(hList, CB_SETCURSEL, 0, 0);          // item index
        SendMessage(hList, CB_GETLBTEXT, 0, (LPARAM) g_tcsTemp);
        GetDateFormat(lcid, 0, NULL, g_tcsTemp, tcsTemp, MAX_STR);
        SetWindowText(GetDlgItem(hDlg, IDC_LDATESAMPLE), tcsTemp);
    }
}
예제 #4
0
파일: ado2.cpp 프로젝트: zxlooong/minica
BOOL CADORecordset::GetFieldValue(int nIndex, CString& strValue, CString strDateFormat)
{
	CString str;
	_variant_t vtFld;
	_variant_t vtIndex;

	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	
	try
	{
		vtFld = m_pRecordset->Fields->GetItem(vtIndex)->Value;
		switch(vtFld.vt) 
		{
		case VT_R4:
			str = DblToStr(vtFld.fltVal);
			break;
		case VT_R8:
			str = DblToStr(vtFld.dblVal);
			break;
		case VT_BSTR:
			str = vtFld.bstrVal;
			break;
		case VT_I2:
		case VT_UI1:
			str = IntToStr(vtFld.iVal);
			break;
		case VT_INT:
			str = IntToStr(vtFld.intVal);
			break;
		case VT_I4:
			str = LongToStr(vtFld.lVal);
			break;
		case VT_UI4:
			str = ULongToStr(vtFld.ulVal);
			break;
		case VT_DECIMAL:
			{
			//Corrected by José Carlos Martínez Galán
			double val = vtFld.decVal.Lo32;
			val *= (vtFld.decVal.sign == 128)? -1 : 1;
			val /= pow(10, vtFld.decVal.scale); 
			str = DblToStr(val);
			}
			break;
		case VT_DATE:
			{
				COleDateTime dt(vtFld);
				
				if(strDateFormat.IsEmpty())
					strDateFormat = _T("%Y-%m-%d %H:%M:%S");
				str = dt.Format(strDateFormat);
			}
			break;
		case VT_CY:		//Added by John Andy Johnson!!!
			{
				vtFld.ChangeType(VT_R8);
 
				CString str;
				str.Format(_T("%f"), vtFld.dblVal);
 
				_TCHAR pszFormattedNumber[64];
 
				//	LOCALE_USER_DEFAULT
				if(GetCurrencyFormat(
						LOCALE_USER_DEFAULT,	// locale for which string is to be formatted 
						0,						// bit flag that controls the function's operation
						str,					// pointer to input number string
						NULL,					// pointer to a formatting information structure
												//	NULL = machine default locale settings
						pszFormattedNumber,		// pointer to output buffer
						63))					// size of output buffer
				{
					str = pszFormattedNumber;
				}
			}
			break;
		case VT_BOOL:
			str = vtFld.boolVal == VARIANT_TRUE? 'T':'F';
			break;
		case VT_EMPTY:
		case VT_NULL:
			str.Empty();
			break;
		default:
			str.Empty();
			return FALSE;
		}
		strValue = str;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}
}
예제 #5
0
BOOL CADORecordset::GetFieldValue(LPCTSTR lpFieldName, wstring& strValue, wstring strDateFormat)
{
	wstring str;
	_variant_t vtFld;

	try
	{
		vtFld = m_pRecordset->Fields->GetItem(lpFieldName)->Value;
		switch(vtFld.vt) 
		{
		case VT_R4:
			str = DblToStr(vtFld.fltVal);
			break;
		case VT_R8:
			str = DblToStr(vtFld.dblVal);
			break;
		case VT_BSTR:
			str = vtFld.bstrVal;
			break;
		case VT_I2:
		case VT_UI1:
			str = IntToStr(vtFld.iVal);
			break;
		case VT_INT:
			str = IntToStr(vtFld.intVal);
			break;
		case VT_I4:
			str = LongToStr(vtFld.lVal);
			break;
		case VT_UI4:
			str = ULongToStr(vtFld.ulVal);
			break;
		case VT_DECIMAL:
			{
			double val = vtFld.decVal.Lo32;
			val *= (vtFld.decVal.sign == 128)? -1 : 1;
			val /= pow((float)10, vtFld.decVal.scale); 
			str = DblToStr(val);
			}
			break;
		case VT_DATE:
			{
#if 0 /*lanshh **/
				COleDateTime dt(vtFld);

				if(strDateFormat.IsEmpty())
					strDateFormat = _T("%Y-%m-%d %H:%M:%S");
				str = dt.Format(strDateFormat);
#endif
			}
			break;
#if 0
		case VT_CY:		
			{
				vtFld.ChangeType(VT_R8);
 
				wstring str;
				str.Format(_T("%f"), vtFld.dblVal);
 
				_TCHAR pszFormattedNumber[64];
 
				//	LOCALE_USER_DEFAULT
				if(GetCurrencyFormat(
						LOCALE_USER_DEFAULT,	// locale for which string is to be formatted 
						0,						// bit flag that controls the function's operation
						str,					// pointer to input number string
						NULL,					// pointer to a formatting information structure
												//	NULL = machine default locale settings
						pszFormattedNumber,		// pointer to output buffer
						63))					// size of output buffer
				{
					str = pszFormattedNumber;
				}
			}
			break;
#endif
		case VT_EMPTY:
		case VT_NULL:
            str.clear();
			break;
		case VT_BOOL:
			str = vtFld.boolVal == VARIANT_TRUE? _T('T'):_T('F');
			break;
		default:
            str.clear();
			return FALSE;
		}
		strValue = str;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}
}
예제 #6
0
파일: currency.c 프로젝트: RPG-7/reactos
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);
}
예제 #7
0
파일: currency.c 프로젝트: RPG-7/reactos
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);
}