Функция GetCurrencyFormat

Declare Function GetCurrencyFormat Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, _
    ByVal dwFlags As Long, _
	ByVal lpValue As String, _
	lpFormat As Any, _
	ByVal lpCurrencyStr As String, _
	ByVal cchCurrency As Long) As Long

GetCurrencyFormat форматирует числовое значение в соответствии с принятым локальным представлением денежных сумм.

Возвращаемое значение

В случае ошибки возвращается 0 (используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает число символов в отформатированной строке.

Параметры

Locale
Идентификатор локального контекста. Возможно использование следующих констант:
LOCALE_SYSTEM_DEFAULT = &H400
Системный локальный контекст по умолчанию
LOCALE_USER_DEFAULT = &H800
Пользовательский локальный контекст по умолчанию
dwFlags
Если используется структура в параметре lpFormat, то равно 0. Если структура используется, то можно использовать константу:
LOCALE_NOUSEROVERRIDE = &H80000000
Принудительное использование системных настроек локального контекста, даже если пользователь изменил их
lpValue
Форматируемая строка. Может содержать только цифры от 0 до 9, одну десятичную точку, знак для отрицательных чисел в первой позиции. Остальные числа недействительны
lpFormat
Структура CURRENCYFMT, содержащая информацию о форматируемой строке. При использовании локальных настроек по умолчанию используйте 0. В этом случае применяйте конструкцию ByVal CLng(0)
lpCurrencyStr
Буфер, куда записывается отформатированная строка
cchCurrency
Размер буфера в символах для lpCurrencyStr

Пример

' Выводим сумму $1,234,567.89
' в соответствии с локальными настройками
Dim cft As CURRENCYFMT
Dim formatted As String  ' отформатированная строка
Dim strlen As Long    ' длина отформатированной строки

' Выводим число в соответствии с локальными настройками
formatted = Space(256)
strlen = GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, "1234567.89", ByVal CLng(0), _
	formatted, Len(formatted))
formatted = Left(formatted, strlen)
Debug.Print "Используемый локальный формат: "; formatted

' Теперь отформатируем число по своим правилам
With cft
    ' Выводим три цифры после десятичной точки
   .NumDigits = 3
    ' Выводим нули после десятичной точки
   .LeadingZero = 1
   ' Группируем каждые три цифры слева от десятичной точки
   .Grouping = 3
   ' Используем запятую в качестве десятичной точки
   .lpDecimalSep = ","
   ' Используем точку для группировки разрядов
   .lpThousandSep = "."
   .NegativeOrder = 4
   .PositiveOrder = 1
    ' Используем знак $ для денежной суммы
   .lpCurrencySymbol = "$"
End With
formatted = Space(256)
strlen = GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, "-1234567.89", cft, formatted, _
	Len(formatted))
formatted = Left(formatted, strlen)
Debug.Print "Наш созданный формат: "; formatted

Смотри также

GetNumberFormat

Категория

Поддержка национальных языков