Ist ein beliebiges Handle immer ein Zeiger?
-
Moin,
Meine Frage ist ob ich jedes beliebige Handle (z.B.
HWND,HPEN, etc.) ohne Cast zuvoid*konvertieren kann oder könnte es sein, dass ein Handle mal kein Zeiger, sondern z.B. ein Integralwert, ist?In der MSDN hab ich keine definitive Antwort auf meine Frage gefunden, vielleicht weiß ja hier jemand was genaueres.
-
Ein Zeiger ist auch ein Integralwert.
Es sind alles nur Zahlen, was auch sonst.
-
Wenn aber sizeof(HWND) != sizeof(void*) ist, dann geht das nicht mehr.
-
Ich weiß nicht wie es in C aussieht, mir gehts grad um C++. Da gilt: sizeof(void*) >= sizeof(T*). Es ist also erlaubt jeden Zeigertyp in void* zu konvertieren und wieder zurück ohne den Wert zu ändern. Von daher sollte ich keine Probleme haben, wenn die Handles garantiert Zeiger sind.
-
Dann guckst halt in ner anständigen IDE wie Visual Studio, welcher Typ hinter HWND, HPEN usw steckt.
-
Handles irgendein Wert... "echte" Zeiger sind sie seltenst...
Der Vorteile halber werden Sie halt als Zeiger implementiert nd an den WinAPI User weiter gegeben, damit man Sie nicht vertauschen kann (HPEN, HBRUSH etc.)
-
Schade eigentlich, aber das war so auch meine Vermutung.
Vielen Dank soweit!