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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous