Я пишу программу ATL C ++, которая служит классом-оболочкой файла OCX. Это будет сборка как dll.
Моя проблема:
В OCX есть метод, который принимает тип CURRENCY.
Пример:
OCXMethodName(long a, const CURRENCY & cy);
В моем коде C ++, когда я пытаюсь передать тип CURRENCY / CY в OCXMethodName, я получаю ошибку во время отладки. Ошибка в том, что он не возвращает 0, что означает не успех. Что-то не так с данными.
См. Пример:
STDMETHODIMP CMethod::MyMethod(LONG var_a, CURRENCY amount)
{
...
long lRet = OCX->OCXMethodName(var_a, amount); //This will execute in OCX
...
}
Он будет собран как dll, и я использовал vbscript для дальнейшего юнит-тестирования.
Ex vbscript код:
Dim ret
ret = objATL.MyMethod(11, 5000) '''This will call the C++ Method
После выполнения появится диалоговое окно «Microsoft (R) Windows Based Script Host».
Мой вопрос заключается в том, каков наилучший способ обработки или преобразования валюты, чтобы я мог передать правильный тип данных в методе OCX?
Переменная валюты хранится внутри как восьмибайтовое длинное целое с четырьмя предполагаемыми десятичными разрядами. Например, значение валюты 1,25 будет храниться как 12500. Надеюсь, что это указывает вам в правильном направлении.
Других решений пока нет …