Création d'un static transparent

Signaler
Messages postés
11
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
4 juillet 2006
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

Par un CreateWindowEx(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 37,43,302,23, hParent, (HMENU)IDC_TITRE, hInst, NULL) ... je cherche à créer un static ayant un fond d'écran transparent.

Comment puis-je opérer cette opération ?

Merci d'avance pour vos réponses.

chrc :)

7 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
WS_EX_TRANSPARENT, tu as exemple dans ma source "texte sur image".
BruNews, ciao...
Messages postés
11
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
4 juillet 2006

Bonjour BruNews,

Je ne passe pas par le Wizard de Visual C++ pour créer mon Window et mes Control Box. De plus mon Static doit s'afficher sur une image bitmap.

Sur tes conseils, j'ai essayé : g_hTitre = CreateWindowEx(WS_EX_TRANSPARENT, "Static", "Essai", WS_CHILD | WS_VISIBLE , 37,43,302,23, hParent, (HMENU)IDC_TITRE, hInst, NULL); ...

Mais, le mot "Essai" s'affiche en noir dans un rectangle GRIS.

Alors, je cherche une solution vers la création d'une classe WNDCLASSEX, avec .hbrBackground = (HBRUSH) NULL .
J'obtiens bien un fond transparent. Mais, je dois implémenter une procédure de traitement des messages... :-p
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Tu as vu que tout est implemente dans mon exemple avec texte modifiable dynamiqement.
BruNews, ciao...
Messages postés
11
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
4 juillet 2006

Avant de te répondre, j'avais été voir ton code "Texte sur image". La difficulté pour moi, se situe dans la non utilisation du wizard pour créer ma fenêtre et mes control box.

Pour utiliser tes exemples, j'ai fait la chose suivante :

g_hTitre = CreateWindowEx(WS_EX_TRANSPARENT, "Static", "", WS_CHILD /*| WS_VISIBLE*/ , 37,43,302,23, hParent, (HMENU)IDC_TITRE, hInst, NULL);

HWND hCtrl = GetDlgItem(hParent, IDC_TITRE);
SetWindowPos(hCtrl, HWND_TOP, 37,43,302,23, SWP_SHOWWINDOW);

HDC hDC = GetDC(hCtrl);
SetBkMode((HDC)hDC, TRANSPARENT);
SetTextColor((HDC)hDC, 0xFF);

...

Mais rien à faire le static possède toujours son fond GRIS !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
faut regarder TOUT le cpp et surtout la dlgproc, c'est dedans que l'on traite sa demande de repaint. J'ai juste utilise l'editeur de resource, JAMAIS aucun wizard.
BruNews, ciao...
Messages postés
11
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
4 juillet 2006

J'ai fait une faute de vocabulaire :
"...La difficulté pour moi, se situe dans la non utilisation de l'éditeur de resource pour créer ma fenêtre et mes control box. "

Car en fait ma dialog box est un skin, donc une image Bitmap inter-changeable. C'est pour cette raison que je crée tout à la main. Il n'y donc pas de dlgproc pour le Static.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
tu passes hParent a CreateWindoxEx, c'est quoi ? tu n'as pas une func callback pour les messages sur ce hParent ?
BruNews, ciao...