Es ist in Ordnung, das OS stellt sicher, dass ein Fenster-Handle niemals einen 32-Bit-Wert überschreiten kann. Sie können nie mehr als 65535 Fenster auf einem Desktop haben, so dass es ziemlich einfach ist. Dass es so etwas funktioniert, wie Sie in COM-Interop-Deklaration für einen Remotable-Fenstergriff, sichtbar in der WTypes.idl SDK-Datei sehen:
typedef union _RemotableHandle switch(long fContext) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: long hRemote;
} RemotableHandle;
typedef [unique] RemotableHandle * wireHWND;
typedef [unique] RemotableHandle * wireHMENU;
// etc..
Beachten Sie, wie es long
für einen Out-of-Process-Anruf ist, ein 32-Bit-Wert.
Ein HINSTANCE ist eine ganz andere Art von Griff, ein Kernel-Griff, es ist sicherlich 64-Bit-Wert unter der Haube. Entspricht der Basisadresse im Speicher des Moduls und musste diese Eigenschaft hinzufügen.
Es gibt auch einige Hilfsfunktionen [hier] (https://www.viva64.com/de/k/0005/), die verwendet werden können, um Griffe zu konvertieren. –