Ich schreibe ein ATL C++ - Programm, das als Wrapper-Klasse einer OCX-Datei dient. Dies wird als DLL erstellt.Welcher Datentyp in C++ entspricht in Vb6 const CURRENCY?
Mein Problem: In OCX gibt es eine Methode, die CURRENCY-Typ akzeptiert. Ex: OCXMethodName(long a, const CURRENCY & cy);
In meinem C++ Code, wenn ich versuche zu WÄHRUNG/CY-Typ in OCXMethodName passiere ich einen Fehler beim Debuggen. Der Fehler ist, dass es 0 nicht zurückgibt, was nicht Erfolg bedeutet. Etwas stimmt nicht mit den Daten.
See Ex: STDMETHODIMP CMethod::MyMethod(LONG var_a, CURRENCY amount) { ... long lRet = OCX->OCXMethodName(var_a, amount); //This will execute in OCX ... }
Es wird als dll werden bauen und ich Vbscript weiter Unit-Test es. Ex vbscript code: Dim ret ret = objATL.MyMethod(11, 5000) '''This will call the C++ Method
Bei der Ausführung "Microsoft (R) Windows Based Script Host" Pop-up-Dialogfeld.
Meine Frage ist, was ist der beste Weg, um Währung zu behandeln oder zu konvertieren, damit ich den richtigen Datentyp in der OCX-Methode übergeben konnte?
Was ist der Fehler? – themiurge
Woher kommt der 'CY'? Der Typ ist buchstäblich 'CURRENCY'. – MSalters
Währung ist eine 64-Bit-Ganzzahl mit Vorzeichen, die Werte enthält, die auf 10000 skaliert sind und als Festkommawert mit 4 Dezimalstellen verwendet werden. Um also eins mit 7 zu multiplizieren, machst du einfach eine 64-Bit-Multiplikation mit 7 und so weiter. Der Typ ist 'CURRENCY' in MIDL' [oleautomation] 'Interface-Definitionen. – Bob77