Je sais que je suis paresseux ici et je devrais chaluter les fichiers d'en-tête pour moi-même, mais quels sont les types réels pour les paramètres LPARAM et WPARAM? Sont-ils des pointeurs, ou des octets de quatre octets? Je fais du code d'interopérabilité C# et je veux être sûr de le faire fonctionner sur les systèmes x64.Quelles sont les définitions pour LPARAM et WPARAM?
Répondre
LPARAM
est un typedef pour LONG_PTR
qui est un long
(signé 32 bits) sur Win32 et __int64
(signé 64 bits) sur x86_64.
WPARAM
est un typedef pour UINT_PTR
qui est un unsigned int
(non signé de 32 bits) sur Win32 et unsigned __int64
(non signé de 64 bits) sur x86_64.
qui est un lien MSDN très utile, merci –
@Charles Bailey: peut-être que je me méprends mais quand vous dites: "__int64 (signé 64 bits) sur x86" ne veux-tu pas dire "sur x86-64" ou win64 ou quelque chose? Je prends x86 pour être 32 bits. – User
@User: Oui, c'est supposé dire x86_64, ce qui est la façon dont Microsoft se réfère maintenant à amd64. –
lParam fait référence à un LONG_PTR et WPARAM fait référence à un UINT_PTR
Sur x86, ils seront 4 octets et 64 bits, ils seront 8 octets.
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;
Qu'est-ce que vous avez besoin de mon ami est http://www.pinvoke.net/
oui, c'est un site utile, bien que des conversions d'interopérabilité de qualité très mélangées –
Ces typedefs remontent aux jours 16 bits. À l'origine, LPARAM
était un long
(signé 32 bits) et WPARAM
était un WORD
(non signé 16 bits), d'où le W and L. En raison de la pratique courante de passer des pointeurs casted comme paramètres de message, WPARAM
a été étendu à 32 bits sur Win32, et à la fois LPARAM
et WPARAM
ont été étendus à 64 bits sur Win64. En C#, vous devez utiliser IntPtr
pour LPARAM
et UIntPtr
pour WPARAM.
Notez que malgré le préfixe LP
, LPARAM
n'est pas un pointeur loin d'un ARAM
.
- 1. Quelles sont les options pour les effets animés jQuery?
- 2. Quelles informations de périphérique HID sont renvoyées dans LParam lorsqu'un périphérique est signalé par le système?
- 3. confus, où sont les définitions des actions show et index?
- 4. Quelles sont les alternatives pour l'authentification Java?
- 5. Quelles sont les clés UIManager pour JFileChooser et FileDialog?
- 6. Quelles sont les options disponibles pour VisualSVNServerHooks.exe?
- 7. Quelles sont les alternatives pour CSharpOptParse?
- 8. Quelles sont les autorisations requises pour subprocess.Popen?
- 9. Quelles sont les différences entre ces définitions de tableau dans MATLAB?
- 10. Quelles sont les différences entre les délégués et les événements?
- 11. Quelles sont les modifications empilables?
- 12. Quelles sont certaines SocketExceptions courantes et quelles en sont les causes?
- 13. Quelles sont les alternatives OpenID
- 14. Quelles sont les spécifications HW recommandées pour les virtualisations?
- 15. Quelles sont les bonnes ressources pour apprendre sur les génériques?
- 16. Quelles sont les meilleures pratiques pour gérer les informations sensibles?
- 17. Quelles sont les bonnes ressources pour comprendre les MIB SNMP?
- 18. Quelles sont les ressources pour apprendre à écrire les spécifications?
- 19. Quelles sont les permissions pour les scripts/répertoires PHP?
- 20. SendMessage lParam vide
- 21. Quelles sont les meilleures pratiques pour les dépôts Kiln?
- 22. Quelles sont les instructions de Linq pour les entités?
- 23. Quelles sont les meilleures pratiques pour les URL publiques «privées»?
- 24. Quelles sont les règles pour nommer les classes AS3?
- 25. Quelles sont les utilisations intéressantes pour les agents Java?
- 26. Quelles sont les fonctions et extensions de modèle MVVM?
- 27. Combien et quelles sont les utilisations de "const" en C++?
- 28. MSBuild, solution VS2008 et CI - quelles sont les meilleures pratiques?
- 29. Quelles sont les différences fondamentales entre ASP.net et PHP?
- 30. Spring 3.0 et SOAP - Quelles sont les meilleures pratiques?
Vous pouvez simplement faire un clic droit sur 'LAPARAM' et sélectionner 'Aller à la déclaration' ... –
@John - Je pourrais si j'avais un IDE C++ Visual, mais je fais C# dev. Trouver les définitions réelles de ces choses prend énormément de temps si vous ne travaillez pas avec un IDE C++. Je devais juste suivre manuellement une trace de plusieurs typedefs pour savoir ce qui se trouvait à la fin de HACMDRIVERID. Si la documentation MSDN était correctement liée à un lien hypertexte, cela m'aurait sauvé beaucoup de temps. –
@Mark: Alors pourquoi cette question est-elle marquée C++? –