Code WinXp dans Win9x

Résolu
larion
Messages postés
140
Date d'inscription
mercredi 28 avril 2004
Statut
Membre
Dernière intervention
21 juillet 2005
- 26 oct. 2004 à 14:09
larion
Messages postés
140
Date d'inscription
mercredi 28 avril 2004
Statut
Membre
Dernière intervention
21 juillet 2005
- 26 oct. 2004 à 15:12
Bonjour,

Dans mon projet C++ (créer avec C++ Builder), j'utilise la fonction API SetLayeredWindowAttibut() qui gère la tranparence.

Bien que cette fonction n'est pas utiliser sous Win9x (car je la désactive)
le code plante parce qu'il cherche à trouver une correspondance à cette fonction API dans le système.
Cela ma forcer à créer deux versions de programme (WinXP avec cette fonction et Win98 sans cette fonction).
Est-il possible de faire cohabiter ces deux versions dans une seule.

2 réponses

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
26 oct. 2004 à 14:24
oui, faut chercher un pointeur sur la func par GetProcAddress() mais ne pas linker ces fonctions statiquement.

ciao...
BruNews, MVP VC++
3
larion
Messages postés
140
Date d'inscription
mercredi 28 avril 2004
Statut
Membre
Dernière intervention
21 juillet 2005

26 oct. 2004 à 15:12
Mais c'est bien sur. Voiçi le code, cela peut servir ...

typedef DWORD (WINAPI *PSLWA)(HWND,DWORD,BYTE,DWORD);
PSLWA FctTransparent = (PSLWA) GetProcAddress(LoadLibrary("user32"),"SetLayeredWindowAttributes");
if(FctTransparent) FctTransparent(fenetre.Handle,0,150,LWA_ALPHA);

Et Merci pour l'info :)
3