Den MethodOwner kannst du weglassen, da dieser in WndProcMethod schon mit drin steckt.
Eine Methodenzeiger ist "zwei Zeiger" in einem (Self und der Prozedurzeiger)
Caste einfach den Methodenzeiger mit TMethod, aus der
Unit System.
Nicht mit PChar casten und dann damit rechnen!
PChar nutzt eine Arithmetic mit SizeOf(Char), also ab Delphi 2009 ist PChar(i)+1 = PAnsiChar(i)+2 = P + 2 Byte
Entweder mit NativeInt (eigentlich NativeUInt) oder eben mit PAnsiChar arbeiten, oder etwas anderem, für welches eine
byteweise Pointerarithmetic verbaut ist.
Und Pointer mit einem LongInt zu casten ist auch keine so gute Idee, in Zeiten eines 64-Bit-Delphis.