long de HWND (VS8 C++)
Comment puis-je cast long de HWND (C++ visual studio 8)?
Long lWindowHandler;
HWND oHwnd = (HWND)lWindowHandler;
Mais j'ai eu le message d'avertissement suivant:
avertissement C4312: "type " cast": la conversion de 'LONG' à 'HWND" de plus grande taille
Grâce.
OriginalL'auteur | 2008-09-18
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que vous êtes sûr que le temps que vous avez est vraiment un HWND, alors c'est aussi simple que:
Je pense que c'est la meilleure réponse,
(HWND) long_ver
ne fonctionne pas pour moi!OriginalL'auteur Roger Lipscombe
HWND est un handle d'une fenêtre.
Ce type est déclaré dans WinDef.h comme suit:
La POIGNÉE est poignée pour un objet.
Ce type est déclaré dans WinNT.h comme suit:
Enfin, PVOID est un pointeur vers n'importe quel type.
Ce type est déclaré dans WinNT.h comme suit:
Donc, HWND est en fait un pointeur sur void. Vous pouvez jeter un long pour un HWND comme ceci:
mais très attention à ce que l'information est stockée dans my_long_var. Vous devez vous assurer que vous avez un pointeur.
Plus tard edit:
L'avertissement suggèrent que vous avez 64 bits portabilité des contrôles allumé. Si vous êtes à la construction d'un 32 bits, vous pouvez les ignorer.
OriginalL'auteur
Le faire n'est sûr que si vous n'êtes pas en cours d'exécution sur une version 64 bits de windows. Le type LONG est de 32 bits, mais le type de POIGNÉE est sans doute 64 bits. Vous aurez besoin pour rendre votre code 64 bits propre. En bref, vous voulez changer le LONG d'un LONG_PTR.
Règles pour l'utilisation de types de pointeur:
HWND
utilise uniquement le plus bas 32 bits et est donc sûr à travers le processus de limites.OriginalL'auteur 1800 INFORMATION