GetSystemMetrics ! Metrics qui foirent ! [Programmation Windows] - C++ - Programmation
Marsh Posté le 12-12-2002 à 20:58:06
Ces symboles sont définis dans des blocs conditionnels.
Essaie de définir WINVER = 0x0500 dans ton projet :
#define WINVER 0x0500
Marsh Posté le 12-12-2002 à 21:07:49
Il me renvoie un warning supplémentaire.
c:\program files\microsoft visual studio\myprojects\sysmets\sysmets.h(2) : warning C4005: 'WINVER' : macro redefinition
Marsh Posté le 12-12-2002 à 21:09:25
Voilà le programme :
sysmets.h
Code :
|
et sysmets.c
Code :
|
Marsh Posté le 12-12-2002 à 21:17:10
WINVER est défini dans StdAfx.h
Si tu le redéfinis dans ton header, ça va pas aller
remplace la valeur de StdAfx.h par 0x0500, ça devrait aller !
Marsh Posté le 12-12-2002 à 22:41:42
Harkonnen a écrit : WINVER est défini dans StdAfx.h |
Tu veux que je modifie LE stdAfx.h ! ! ! C'est autorisé ça ?
Marsh Posté le 12-12-2002 à 22:44:04
Cherrytree a écrit : Tu veux que je modifie LE stdAfx.h ! ! ! C'est autorisé ça ? |
absolument, tu ne risques rien du tout !
Marsh Posté le 12-12-2002 à 22:44:55
Cherrytree a écrit : Tu veux que je modifie LE stdAfx.h ! ! ! C'est autorisé ça ? |
Euh, j'ai pas de stdAfx.h pour ce projet. C'est pas un projet MFC. C'est p'têt pour ça ?
Marsh Posté le 12-12-2002 à 22:46:38
Cherrytree a écrit : Euh, j'ai pas de stdAfx.h pour ce projet. C'est pas un projet MFC. C'est p'têt pour ça ? |
exact !
mais WINVER est quand même défini quelque part sinon tu n'aurais pas le warning.
cherche le dans un de tes headers. normalement, il doit être à 0x0400. passe le à 0x0500, et les portes du paradis te seront ouvertes
Marsh Posté le 12-12-2002 à 22:48:57
Harkonnen a écrit : |
Tu n'aurais pas une idée du header, parce que Windows.h !!! c'est bourré d'includes !
Marsh Posté le 12-12-2002 à 22:49:47
Cherrytree a écrit : Tu n'aurais pas une idée du header, parce que Windows.h !!! c'est bourré d'includes ! |
C'était dans Windows.h justement !
Marsh Posté le 12-12-2002 à 22:51:45
Je serais toi, je modifierais pas ton windows.h !
Il définit peut être WINVER mais uniquement si il n'est pas défini avant. Mets tout simplement ton "#define WINVER 0x0500' avant ton '#include <windows.h>'.
Marsh Posté le 12-12-2002 à 22:52:26
Par contr, peux-tu m'en dire plus sur la raison de ce mic-mac ?
ça marche, grace à toi, mais en revanche j'obtiens ce message : NOTE: WINVER has been defined as 0x0500 or greater which enables
Windows NT 5.0 and Windows 98 features. When these headers were released,
Windows NT 5.0 beta 1 and Windows 98 beta 2.1 were the current versions.
For this release when WINVER is defined as 0x0500 or greater, you can only
build beta or test applications. To build a retail application,
set WINVER to 0x0400 or visit http://www.microsoft.com/msdn/sdk
to see if retail Windows NT 5.0 or Windows 98 headers are available.
See the SDK release notes for more information.
Marsh Posté le 12-12-2002 à 22:55:46
Tu doit avoir le Platform SDK livré avec Visual Studio 6, non ?
Si c'est ça, il te faut télécharger le dernier, ici http://www.microsoft.com/msdownloa [...] sdkupdate/
Marsh Posté le 12-12-2002 à 22:58:25
Cherrytree a écrit : Par contr, peux-tu m'en dire plus sur la raison de ce mic-mac ? |
tu as un platform SDK assez ancien, sorti à l'époque ou les symboles que tu décris ne fonctionnait que sur des bétas de Win 2000.
passer WINVER à 0x0500 te permet d'activer les features de 2000.
par contre, je te conseille de récupérer un nv SDK
edit : grilled
Marsh Posté le 12-12-2002 à 23:02:07
par contre, pour éviter de toucher aux headers, ce qui est assez bourrin je te l'accorde, tu peux faire ceci :
Project->Settings->Onglet "C/C++"->dans le combo "Category", tu sélectionnes "Général" et dans le champ "Preprocessor definitions tu ajoutes "WINVER = 0x0500"
Marsh Posté le 12-12-2002 à 23:21:09
ReplyMarsh Posté le 12-12-2002 à 23:24:55
Je suppose que c'est le Core SDK que je dois installer. C'est grave si c'est celui de .Net ?
Marsh Posté le 12-12-2002 à 23:29:52
Cherrytree a écrit : C'est grave si c'est celui de .Net ? |
Non, le '.Net', c'est juste pour faire de la pub !
Marsh Posté le 12-12-2002 à 23:51:09
gatorette a écrit : |
Cool ! Merci pour tout. J'm'en serais pas sorti seul. Une dernière pour la route : est-ce qu'il existe une page web sur les conventions relatives à Visual C++ ou la programmation Windows en général, recommandée par M$ ou autre (mais pas par Robert ou Jacquot sur son site perso chez Wanadoo, bien sûr).
Marsh Posté le 13-12-2002 à 00:01:21
Je sais que la plupart du temps l'API Windows utilise la notation Hongroise. De là à dire que c'est une recommendation...
Marsh Posté le 13-12-2002 à 00:39:34
gatorette a écrit : Je sais que la plupart du temps l'API Windows utilise la notation Hongroise. De là à dire que c'est une recommendation... |
Je savais pas que la notation hongroise venait à l'origine d'un chercheur de M$.
Marsh Posté le 12-12-2002 à 20:23:30
Voilà. Je suis en train d'apprendre la prog Windows (sans MFC) et j'ai ce programme d'exemple qui consiste à afficher une série de métriques. J'ai fait un copier-coller des sources et à la compilation sous VC++, j'ai ces metrics là qui ne sont pas reconnues.
SM_MOUSEWHEELPRESENT, SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN, SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN, SM_CMONITORS, SM_SAMEDISPLAYFORMAT.
Les autres passent bien. Faut-il inclure des libs particulières ou autre ?
---------------
Le site de ma maman