lange HWND (VS8 C++)
Wie kann ich warf lange HWND (C++, visual studio 8)?
Long lWindowHandler;
HWND oHwnd = (HWND)lWindowHandler;
Aber ich bekam die folgende Verwarnung:
warning C4312: 'Typumwandlung' : Konvertierung von 'LONG' in 'HWND' größeren
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solange Sie sicher sind, dass die LANGE Sie haben, ist wirklich ein HWND, dann ist es einfach:
(HWND) long_ver
funktioniert bei mir nicht!HWND ist ein handle zu einem Fenster.
Dieser Typ wird deklariert in WinDef.h wie folgt:
GRIFF handle zu einem Objekt.
Dieser Typ wird deklariert, in WinNT.h wie folgt:
Schließlich, PVOID ist ein Zeiger auf einen beliebigen Typ haben.
Dieser Typ wird deklariert, in WinNT.h wie folgt:
Also HWND ist eigentlich ein Zeiger auf void sein. Sie werfen kann eine lange, eine HWND-Eigenschaft wie diese:
aber sehr vorsichtig, welche Informationen gespeichert werden, die in my_long_var. Sie haben, um sicherzustellen, dass Sie haben einen Zeiger in es.
Später edit:
Die Warnung vorschlagen, dass Sie habe die 64-bit-Portabilität prüft eingeschaltet. Wenn Sie eine 32-bit-Anwendung können Sie ignorieren.
Tun, dass ist nur sicher, wenn Sie nicht unter einer 64 bit-version von windows. Der LONG-Datentyp ist 32 bit, aber der GRIFF Typ ist wohl 64 bit. Sie brauchen, um Ihren code 64 bit clean. Kurz gesagt, werden Sie wollen, um zu ändern, die LANGE auf ein LONG_PTR.
Regeln für die Verwendung von Zeiger-Typen:
HWND
verwendet nur die untersten 32 bits und ist somit sicher über Prozess-Grenzen.