Ganz einfach: ein Word ist 16 Bit lang, ein Integer 32. Ein Integer besteht folglich aus zwei Words. Diese beiden Words enthalten die Koordinaten. Durch Bit-Shifting kannst du das dann so lösen (bin in Delphi nicht mehr so firm, Code ohne Garantie; vielleicht stellt Delphi sogar ein Pendant für diese Funktion bereit):
Delphi-Quellcode:
function WordsToInt(w1: Word; w2: Word): Integer;
begin
Result := (w1 shr 16) or w2;
end;
Der resultierende Integer ist dann dein lparam. Anmerkung: Cardinal wäre hier eigentlich der richtige Rückgabetyp, da der Rückgabewert kein Vorzeichen haben sollte. Aber wie gesagt: bin ich Delphi nicht mehr sehr firm, da ich schon länger nicht mehr damit programmiert habe.
Dein lparam ergibt sich dann aus X und Y:
lparam := WordsToInt(X, Y);
Dust Signs