|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
Bonjour.
J'ai un projet dans lequel j'ai utilisé windows.h sous seven pour l'utilisation de la structure WM_TOUCH et des méthodes spécifiquement Win7 comme GetTouchInputInfo. Le problème est que j'aimerais pouvoir compiler sous XP. On a pu me parler du chargement dynamique et le problème est que je ne sais absolument pas comment cela pourrait fonctionner. J'ai juste pu voir que je devais redéclarer les fonctions comme par exemple : GetTouchInputInfo libWindows::my_GetTouchInputInfo = NULL; J'ai aussi des structures de données Win7 (WM_TOUCH) et des macros. Merci Benjamin |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Amateur Inscription : décembre 2005 Messages : 170 ![]() |
Je ne connais pas vraiment la prog windows, mais si tu veux que ca compile sous wndows XP, il faut que tu trouves un moyen de détecter en préprocesseur la version de windows, et faire un #define pour le signaler.
Ensuite entoures le code typique windows 7 comme ceci : Code :
|
||
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
Merci,
C'est en effet ce que je fait : "isoler le code Windows 7 dans des classes avec une interface virtuelle". Il faut donc que je refasse ma propre implémentation des fonctions utilisées sur seven? Merci pour l'aide |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Amateur Inscription : décembre 2005 Messages : 170 ![]() |
Plusieurs options.
Si ton code peut tourner sans les fonctionnalités windows 7, soit tu fais sans, soit tu les rend optionnelles, c'est a dire que tu t'arrange pour que ca se greffe sur le reste, si c'est pas la on fait sans. Si ton code ne peut pas tourner sans les fonctionnalités windows 7, alors pèse bien ta décision de permettre une compilation windows XP. Si tu choisis de poursuivre alors il te faudra ré implémenter les fonctionnalités Windows 7 avec du code XP... Et alors pourquoi utiliser les fonctionalités windows 7 ? Garde ton implémentation pour XP sous windows 7, ca t'évitera de devoir tester sous les deux OS. |
|
00
|
|
|
#5 | ||||||||||
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 061 ![]() |
Il est possible de travailler de 2 manières différentes.
Soit tu fais 2 binaires différents avec du "#ifdef SEVEN"/ #endif", un binaire pour XP et un binaire pour Seven. La différence se fait à la compilation, c'est dans la grandes lignes ce que décrit Rewpparo. Tu peux aussi faire un seul binaire dont le comportement est différent suivant la présence ou non d'une fonction ou d'une API. Pour cela, il faut connaitre la fonction et surtout la DLL dans laquelle est est implémentée. Heureusement, le MSDN donne toutes ses informations. On va partir sur un exemple avec la fonction EnterSynchronizationBarrier() qui n'est disponible qu'en Windows 8. Le MSDN donne la signature de la fonction : Code :
La première chose à faire consiste à déclarer un type pointeur de fonction et une variable pour cette fonction Code :
Code :
Code :
à la fin de ton programme ou bien quand tu es sûr que tu n'as plus besoin d'appeler cette fonction, il faut décharger la DLL Code :
PS : tu as tout intérêt à encapsuler ce code dans une classe spécifique
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
||||||||||
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
Oui merci, c'est ce que j'ai fait, à peu près, dans une classe.
Merci pour votre aide |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com