Grundsätzlich (und aus eigener negativer Erfahrung) möchte ich dazu noch anmerken, dass es besser ist solche harten Casts so sparsam wie nur möglich einzusetzen, speziell bei der Umwandlung 32 in 64 bit kann das bei unbedachter Verwendung der Datentypen für ziemlichen Ärger sorgen.
Ich finde es dann immer besser sich Bereiche mit Konstanten (ähnlich wie WM_USER) einzuteilen, also zum Beispiel:
Delphi-Quellcode:
Const
ID_BASE_X = 0;
ID_BASE_Y = 4000;
ID_BASE_Z = 20000;
und davon abgeleitet die benötigten Werte zu definieren:
ID_RECT = ID_BASE_Z + 0;