diff --git a/reactos/dll/win32/shell32/shell32.cpp b/reactos/dll/win32/shell32/shell32.cpp index 2ef621af55f..4eb18473dd9 100644 --- a/reactos/dll/win32/shell32/shell32.cpp +++ b/reactos/dll/win32/shell32/shell32.cpp @@ -25,6 +25,45 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); +/* + * Implemented + */ +EXTERN_C LPWSTR +WINAPI +AddCommasW(DWORD lValue, LPWSTR lpNumber) +{ + WCHAR szValue[MAX_PATH], szSeparator[8 + 1]; + NUMBERFMTW numFormat; + + GetLocaleInfoW(LOCALE_USER_DEFAULT, + LOCALE_STHOUSAND, + szSeparator, + ARRAYSIZE(szSeparator)); + + numFormat.NumDigits = 0; + numFormat.LeadingZero = 0; + numFormat.Grouping = 0; // FIXME! Use GetLocaleInfoW with LOCALE_SGROUPING and interpret the result. + numFormat.lpDecimalSep = szSeparator; + numFormat.lpThousandSep = szSeparator; + numFormat.NegativeOrder = 0; + + swprintf(szValue, L"%llu", lValue); + //_ultow(lValue, szValue, 10); + + if (GetNumberFormatW(LOCALE_USER_DEFAULT, + 0, + szValue, + &numFormat, + lpNumber, + wcslen(lpNumber)) != 0) + { + return lpNumber; + } + + wcscpy(lpNumber, szValue); + return lpNumber; +} + /************************************************************************** * Default ClassFactory types */ diff --git a/reactos/dll/win32/shell32/stubs.cpp b/reactos/dll/win32/shell32/stubs.cpp index df6f7fa1373..0a2e12a4d4e 100644 --- a/reactos/dll/win32/shell32/stubs.cpp +++ b/reactos/dll/win32/shell32/stubs.cpp @@ -14,19 +14,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); -/* - * Unimplemented - */ -EXTERN_C LPWSTR -WINAPI -AddCommasW(DWORD dwUnknown, LPWSTR lpNumber) -{ - LPCWSTR lpRetBuf = L"0"; - - FIXME("AddCommasW() stub\n"); - return const_cast(lpRetBuf); -} - /* * Unimplemented */