Integer(@MyCharArray)
ist falsch, weil es unter 64 Bit den Wert abschneidet und Daten vernichtet.
MAKELONG an LPARAM gibt keinerlei Probleme, da der kleinere Wert immer in den Größeren rein passt.
Soweit ich das verstanden habe erwartet Windows einen 64Bit Wert, MAKELONG liefert aber nur einen 32Bit Wert. D.h. die hoch(wertigen) 32Bit sind nicht definiert.
Falsch verstanden.
TypeCast bei Integer-Typen ... dabei wird korrekt umgewandelt, also die höheren Bits werden mathematisch "aufgefüllt".