Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4542 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C(++)] GetWindowLongPtr

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C(++)] GetWindowLongPtr

n°715582
syntax
Posté le 04-05-2004 à 21:27:02  profilanswer
 

Bonjour à tous,
 
Je cherche à utiliser l'API GetWindowLongPtr pour compiler une source qui m'intéresse.
Avec Win2000 et VC++ 6, l'API ne semble pas dans les include
pourtant selon MSDN on la trouve depuis win95 !
Je la déclare manuellement, elle n'est pas dans les lib !
J'utilise ensuite GetProcAddress (bourrin !!), et toujours rien,
Je vérifie, et elle n'est pas exportée dans mon user32.dll !!!
Je croie vivre un cauchemard.
Help ?
 
 
MSDN (google "GetWindowLongPtr" )
 
Header Declared in Winuser.h, include Windows.h  
Import library User32.lib  
Minimum operating systems Windows 95, Windows NT 3.1  
Unicode Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP

mood
Publicité
Posté le 04-05-2004 à 21:27:02  profilanswer
 

n°715645
syntax
Posté le 04-05-2004 à 22:29:27  profilanswer
 

petite info supplémentaire, il s'agit de la version 64 bit de GetWindowLong, mais toujours le meme probleme...

n°715646
pedro-2480
Posté le 04-05-2004 à 22:29:49  profilanswer
 

Pourquoi ne te sers tu pas de GetWindowLong() ? l'unique avantage de GetWindowLongPtr est de marcher en 64 bits...
 
edit: ... hum... à quelques secondes près ;)


Message édité par pedro-2480 le 04-05-2004 à 22:30:20

---------------
- Pierre Baudelet -
n°715691
pedro-2480
Posté le 04-05-2004 à 23:04:06  profilanswer
 

Si aucune des deux fonctions n'est déclarée dans ton winuser.h, mets à jour ton platform SDK chez microsoft, la dernière version du platform SDK de février 2003 contient ces déclarations dans winuser.h


---------------
- Pierre Baudelet -
n°715808
syntax
Posté le 05-05-2004 à 09:25:59  profilanswer
 

Mais c'est quand meme curieux que la fonction ne soit pas exportée dans user32.dll !

n°715811
HelloWorld
Salut tout le monde!
Posté le 05-05-2004 à 09:39:18  profilanswer
 

Citation :

Pourquoi ne te sers tu pas de GetWindowLong() ? l'unique avantage de GetWindowLongPtr est de marcher en 64 bits...


Parce que MS demande de le faire, et que ça fait sauter le warning de VC++ concernant les pblm de portabilité.
 

Citation :

Mais c'est quand meme curieux que la fonction ne soit pas exportée dans user32.dll !


Parce que GetWindowLongPtr, tout comme la plupart des fonctions (GetWindowsLong, MessageBox, ...) n'existe simplement pas !
=> GetWindowLongPtrA, GetWindowLongPtrW, ...
Si tu ne les trouves pas (winuser.h), il serait effectivement temps de mettre à jour ton SDK.


Message édité par HelloWorld le 05-05-2004 à 09:39:30
n°716474
syntax
Posté le 05-05-2004 à 16:39:54  profilanswer
 

Uhuhuh je me doute bien que pour chaque API il existe une version A et une version W. Peut-etre que la version Ptr est juste une macro ??

n°716511
HelloWorld
Salut tout le monde!
Posté le 05-05-2004 à 16:55:38  profilanswer
 

GetWindowLongPtr est une macro soit sur GetWindowLongPtrA ou W.

Code :
  1. #ifdef _WIN64
  2. WINUSERAPI
  3. LONG_PTR
  4. WINAPI
  5. GetWindowLongPtrA(
  6.     HWND hWnd,
  7.     int nIndex);
  8. WINUSERAPI
  9. LONG_PTR
  10. WINAPI
  11. GetWindowLongPtrW(
  12.     HWND hWnd,
  13.     int nIndex);
  14. #ifdef UNICODE
  15. #define GetWindowLongPtr  GetWindowLongPtrW
  16. #else
  17. #define GetWindowLongPtr  GetWindowLongPtrA
  18. #endif // !UNICODE
  19. WINUSERAPI
  20. LONG_PTR
  21. WINAPI
  22. SetWindowLongPtrA(
  23.     HWND hWnd,
  24.     int nIndex,
  25.     LONG_PTR dwNewLong);
  26. WINUSERAPI
  27. LONG_PTR
  28. WINAPI
  29. SetWindowLongPtrW(
  30.     HWND hWnd,
  31.     int nIndex,
  32.     LONG_PTR dwNewLong);
  33. #ifdef UNICODE
  34. #define SetWindowLongPtr  SetWindowLongPtrW
  35. #else
  36. #define SetWindowLongPtr  SetWindowLongPtrA
  37. #endif // !UNICODE
  38. #else  /* _WIN64 */
  39. #define GetWindowLongPtrA   GetWindowLongA
  40. #define GetWindowLongPtrW   GetWindowLongW
  41. #ifdef UNICODE
  42. #define GetWindowLongPtr  GetWindowLongPtrW
  43. #else
  44. #define GetWindowLongPtr  GetWindowLongPtrA
  45. #endif // !UNICODE
  46. #define SetWindowLongPtrA   SetWindowLongA
  47. #define SetWindowLongPtrW   SetWindowLongW
  48. #ifdef UNICODE
  49. #define SetWindowLongPtr  SetWindowLongPtrW
  50. #else
  51. #define SetWindowLongPtr  SetWindowLongPtrA
  52. #endif // !UNICODE
  53. #endif /* _WIN64 */


Toutes les fonctions ne sont pas en double version, seulement celles qui manipulent des chaines.

n°718034
jesus_chri​st
votre nouveau dieu
Posté le 06-05-2004 à 23:27:27  profilanswer
 

tu cherchais pas à compiler virtualdub ?

n°718854
syntax
Posté le 07-05-2004 à 16:05:06  profilanswer
 

hmmm nop !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C(++)] GetWindowLongPtr

 

Sujets relatifs
Plus de sujets relatifs à : [C(++)] GetWindowLongPtr


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)