Voici ce qu'il faut faire avec un Visual C++ ancien 1) ajouter ces déclarations dans un fichier d'entête personnel // --- Utilisation de la fonction "SetLayeredWindowAttributes" // --- pour régler l'opacité d'une fenêtre #ifndef WS_EX_LAYERED #define WS_EX_LAYERED 0x00080000 #define LWA_COLORKEY 0x00000001 #define LWA_ALPHA 0x00000002 #endif typedef BOOL (WINAPI* lpfnSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD); 2) Fonction de réglage de l'opacité d'une fenêtre à implémenter dans le programme bool SetOpacity ( HWND hWnd // E:Handle de la fenêtre ,int iOpacity // E:pourcentage d'opacité (0=invisible à 100=opaque=totalement visible) ) // S:true=ok false=non réalisé (OS incompatible ou outil non trouvé) { // --- Vérifier que l'on tourne sous Win2K OSVERSIONINFO Version = {sizeof(OSVERSIONINFO)}; GetVersionEx(&Version); bool bWin2K = (Version.dwPlatformId == VER_PLATFORM_WIN32_NT && Version.dwMajorVersion >= 5); if (! bWin2K) return false; // OS incompatible // --- Pointer la fonction utilisée dans la DLL "USER32.DLL" HMODULE hUser32 = GetModuleHandle("USER32.DLL"); if (hUser32 == NULL) return false; // DLL non trouvée lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32,"SetLayeredWindowAttributes"); if (SetLayeredWindowAttributes == NULL) return false; // fonction non trouvée // --- Ajouter le style nécessaire à la fenêtre SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE) | WS_EX_LAYERED); // --- Assurer que le pourcentage d'opacité soit entre 0 et 100 iOpacity = iOpacity < 0 ? 0 : (iOpacity > 100 ? 100 : iOpacity); // --- Régler l'opacité SetLayeredWindowAttributes(hWnd,0,(BYTE)(iOpacity * 255 / 100),LWA_ALPHA); return true; } 3) Remarque Dans la fonction "SetLayeredWindowAttributes", la constante LWA_ALPHA permet de régler l'opacité générale de la fenêtre avec le niveau passé dans le troisième argument (0=invisible à 255=opaque) (et la couleur passée en deuxième argument, 0 ci-dessus, n'a aucune signification). Cette constante peut être remplacée par LWA_COLORKEY pour ne régler l'opacité de la fenêtre que par rapport à une couleur qui doit alors être passée dans le deuxième argument (et le niveau d'opacité passé en troisième argument n'a aucune signification). Exemple : COLORREF rouge = RGB(255,0,0); SetLayeredWindowAttributes(hWnd,rouge,0,LWA_COLORKEY); rendra transparent tout ce qui est rouge dans la fenêtre (c'est à dire que les pixels rouges ne sont pas visualisés).
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.