'Transparence' des controles d'une form

Signaler
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Bonjour,

VOila, je 'dessine' le fond de ma form a l'aide d'une fonction maison, mais mes controles n'adoptent pas cette couleur pour leur propre fond, j'ai defini la propriété transparent a TRUE, mais rien ni fait..SI kelkun a une solution, merci beaucoup !

++

Alhexman

7 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Salut,

Il faut que quand tu recois le message WM_CTLCOLORSTATIC tu fasses un SetBkMode((HDC) wParam, TRANSPARENT);

Exemple :

case WM_CTLCOLORSTATIC:
if(GetWindowLong((HWND)lParam, GWL_ID) == 8001) {
SetBkMode((HDC) wParam, TRANSPARENT);
}

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Attention j'ai oublié de préciser que le message WM_CTLCOLORSTATIC est uniquement pour les controles static pour les autres ca peut être WM_CTLCOLORLISTBOX, ...

Voir : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/indivcontrol.asp

Pour plus d'informations

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
re,

Le code ke tu m'as donné ne fonctionne pas, mm pour un controle static, j'ai bien testé l'entrée du prog ds le case, celui ci y rentre bien, mais ca ne change rien...
Ca vient ptet du fait ke je dessine moi mm le fond de ma form ?

Merci ++

alhexman
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Si je me souviens bien, j'ai fait un exemple de static transparent qui met du texte sur une image, faut fouiller dans mes sources.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Vérifie l'ID de ton contrôle (8001 dans mon exemple).

Effectivement une des permières sources de BruNews concerne cela. Tu y le code que je t'ai montré plus haut en action.

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
http://www.cppfrance.com/code.aspx?ID=9674

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Ok, c bon, ton code n'est pa faux Arnotic, mais tu avais oublié de me donner la valeur a renvoyer : return (BOOL)GetStockObject(NULL_BRUSH);

Voila, merci Brunews (come dab..) et a toi oci Arnotic...

++

Alhexman