abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 2012
-
16 août 2005 à 23:59
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
17 août 2005 à 20:03
Pk lorsque je compile ça me sort GetWindowModuleFileName undeclared identifier ??
Pourtant j'ai déclaré la librairie windows.h, j'ai aussi essayé en ajoutant Winuser.h et aussi avec #pragma comment(lib, "user32.lib") mais rien à faire ça marche pas !!
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 03:53
Salut,
Je viens de ragarder le fichier "winuser.h" dans lequel
GetWindowModuleFileName() est déclarée. Elle fait partie d'un groupe de
fonctions contenues dans un bloc #if #endif.
#if(WINVER >= 0x0500)
//...........
#endif /* WINVER >= 0x0500 */
Pour résoudre le problème, il suffit donc de commencer le code en toute première ligne par:
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 14:58
Salut,
Je viens de voir le fichier "winuser.h" d'un récent SDK. C'est pareil,
cette fonction figure dans le même bloc #if #endif. Je pense que le
problème vient plutôt du compilateur. Dans Visual 6, WINVER est défini
par défaut à 0x0400. Donc inférier à 0x0500 requis par cette
fonction. J'ai fait int ver = WINVER; dans un programme et ça me donne bien 0x0400. Vous pouvez me dire la valeur par défaut retournée par vos compilateurs? Merci.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 15:34
Merci BruNews, on est maintenant sûr que ça vient du compilateur.
Oui c'est vrai moi aussi je pensais la même chose de _WIN32_WINNT. Cest
pour ça que cela m'a intrigué. Je ne sais pas pourquoi Microsoft
utilise les deux alors qu'une seule suffirait.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 16:37
En regardant la page MSDN de la fonction GetWindowModuleFileName() on peut lire:
Minimum operating systems
: Windows 95, Windows NT 4.0 SP3
Il y'a erreur quelque part. Soit dans la documentation du site, soit
dans les fichiers *.h fournis avec le compilateur. Je viens de voir que
cette fonction existe aussi dans Windows 98 ayant comme
WINVER 0x0401. Je me demande alors pourquoi ils ont fixé
0x0500 comme version minimum pour cette fonction. 0x0500 correspond à
Win Me et Win2000.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 17 août 2005 à 17:47
le mieux est d'avoir toujours
#define _WIN32_WINNT 0x0501
#include <windows.h>
dans cet ordre et tout va bon.
C'est déjà fait tout seul dans VS 2003 mais je continue par principe.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 18:17
Cela précise que la plateforme cible est Windows XP. Moi je préfère ne
définir _WIN32_WINNT que si je veux faire une application qui ne
tournera que sur certaines plateformes (à cause de certaines fonctions
bien sûr). En évitant de le définir, on est sûr que notre programme
tournera aussi sur les anciennes plateformes (95, 98, NT etc...).
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2005 à 20:03
Normalement oui ses systèmes sont dépassés mais ils sont encore
utilisés. Dernièrement, une école m'a demandé de faire une application
qui puisse tourner sur tous les Windows depuis Win98. Ils ont un large
parc informatique où il y'a tout sauf linux.