OCXファイルのラッパークラスとして機能するATL C++プログラムを作成しています。これはdllとして構築されます。vb6のconst CURRENCYに相当するC++のデータ型は何ですか?
問題: OCXでは、CURRENCY型を受け入れるメソッドがあります。 例:私のC++コードで OCXMethodName(long a, const CURRENCY & cy);
私はOCXMethodNameにCURRENCY/CYタイプを渡すしようとすると、私はデバッグ中にエラーが発生します。エラーは、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 code: Dim ret ret = objATL.MyMethod(11, 5000) '''This will call the C++ Method
"Microsoft(R)Windows Script Host"ダイアログがポップアップ表示されます。
私の質問は、OCXメソッドで正しいデータ型を渡すことができるように、CURRENCYを処理または変換する最良の方法は何ですか?
エラーは何ですか? – themiurge
「CY」はどこから来たのですか?型は文字通り 'CURRENCY'です。 – MSalters
通貨は、10000でスケールされた値を含む64ビット符号付き整数で、小数点以下4桁の「固定小数点」値として使用されます。したがって、1を7で掛けるには、64ビットの乗算を7回行うなどです。タイプは、MIDLの[oleautomation]インタフェース定義の 'CURRENCY'です。 – Bob77