Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1372 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [win32] fenêtre transparente ET clickable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[win32] fenêtre transparente ET clickable

n°566078
R3g
fonctionnaire certifié ITIL
Posté le 13-11-2003 à 19:43:48  profilanswer
 

En gros, j'ai un éditeur de texte (une fenêtre toute con avec un EDIT dedans), et je voudrais que le fond soit transparent. J'ai trouvé à la faire en rendant la couleur de fond du contrôle transparente :

Code :
  1. SetWindowLong(hwndMain, GWL_EXSTYLE, WS_EX_LAYERED);
  2. SetLayeredWindowAttributes(hwndMain, RGB(255, 255, 255), LWA_COLORKEY);


Le fond de la fenêtre est bien transparent, et même trop : quand on clique dans la fenêtre, c'est la fenêtre en dessous qui reçoit le clic.
Donc ma question est simple : comment obtenir le même résultat tout en continuant à recevoir les clics ?


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 13-11-2003 à 19:43:48  profilanswer
 

n°566609
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 12:59:25  profilanswer
 

heupe !


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566615
chrisbk
-
Posté le 14-11-2003 à 13:04:43  profilanswer
 

dsl aucune idee, mais franchement l'API win32, t sur ? :D

n°566618
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 13:07:03  profilanswer
 

chrisbk a écrit :

dsl aucune idee, mais franchement l'API win32, t sur ? :D

Oui. Quoi d'autre ? MFC ? WinFX ? :D
J'ai envie de faire du win32, c'est une expérience.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566620
chrisbk
-
Posté le 14-11-2003 à 13:07:59  profilanswer
 

R3g a écrit :

Oui. Quoi d'autre ? MFC ? WinFX ? :D


 
Winforms :D

R3g a écrit :


J'ai envie de faire du win32, c'est une expérience.


Ah ca, on s'en rapelle longtemps [:joce]
(mais au moins on sait comment ca fonctionne par derriere, parfois c bien pratique)

n°566629
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 13:13:51  profilanswer
 

winforms c'est .NET, c'est ça ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566630
chrisbk
-
Posté le 14-11-2003 à 13:14:53  profilanswer
 

ouaip...Maintenant ca ne veut pas forcement dire passage au c#/vb.net obligatoire t'as le managed c++ pour une transition en douceur. Mais je crains quand meme d'avoir repondu a coté de la plaque, tu fais du C par choix ?

n°566632
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 13:16:20  profilanswer
 

Oui c'est un choix. Jusqu'ici je n'ai fais quasiment que du java et du vb (là c'était pas un choix), et je voulais voir ce que c'était de faire de la prog windows façon roots.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566922
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 17:03:51  profilanswer
 

Bon, et sinon, quelqu'un aurait une suggestion ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566949
Konar
Posté le 14-11-2003 à 17:46:43  profilanswer
 

c'est juste un détail, mais ta manière de faire marche seulement sous 2000/XP, alors qu'y a une autre méthode : passer par SetWindowsRgn() pour spécifier une 'région' à une fenêtre.
 
par contre ca revient au même, c'est la fenêtre d'en dessous qui recevra les clics.

mood
Publicité
Posté le 14-11-2003 à 17:46:43  profilanswer
 

n°566950
R3g
fonctionnaire certifié ITIL
Posté le 14-11-2003 à 17:50:07  profilanswer
 

Konar a écrit :

c'est juste un détail, mais ta manière de faire marche seulement sous 2000/XP, alors qu'y a une autre méthode : passer par SetWindowsRgn() pour spécifier une 'région' à une fenêtre.
 
par contre ca revient au même, c'est la fenêtre d'en dessous qui recevra les clics.

OUi je sais. En fait c'est pas tout à fait pareil : déja ça marche pas du tout de la même façon "derrière", d'après ce que j'ai compris, et surtout ça me permet de gérer aussi la transparence globale de ma fenêtre avec LWA_ALPHA.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°566952
Konar
Posté le 14-11-2003 à 17:55:03  profilanswer
 

tu peux tenter un truc ultra moche, compliqué et pas sur de marcher : tenter de dessiner tes bouts de fenetre en te basant sur la fenetre d'en dessous, en gros dessiner ta fenetre pour la confondre avec celle du dessous. ca sera pas une vraie transparence, mais ca y ressemblera. et tu pourras récuperer les clics normalement.

n°567565
R3g
fonctionnaire certifié ITIL
Posté le 15-11-2003 à 11:54:32  profilanswer
 

Oui je vois ce que tu veux dire mais je suis pas sur que ca soit très facile : ce que veux c'est rendre transparent le fond d'un edit, mais qu'on continue à voir le texte. Ca va devenir trop compliqué pour juste une feature-gadget.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°571580
HelloWorld
Salut tout le monde!
Posté le 20-11-2003 à 14:04:36  profilanswer
 

http://msdn.microsoft.com/library/ [...] ibutes.asp
Y'a 4 parametres à SetLayeredWindowAttributes, t'as mis quoi au 4°?
As tu essayé de jouer avec la transparence? Si tu mets 0, ta fenêtre sera 100% transparente => pas de clic.
Si tu mets 1, a l'oeil on voit pas la diff, mais je pense que tu recevras les clics... A tester.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°571834
R3g
fonctionnaire certifié ITIL
Posté le 20-11-2003 à 17:33:06  profilanswer
 

En fait c'est pas avec le LWA_ALPHA que je joue, ça ça va, moi c'est le LWA_COLORKEY que j'utilise -> la couleur du fond de ma fenetre devient 100% transparente.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°572438
HelloWorld
Salut tout le monde!
Posté le 21-11-2003 à 13:33:27  profilanswer
 

Et tu peux pas la faire 99% transparente...,


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°573317
R3g
fonctionnaire certifié ITIL
Posté le 22-11-2003 à 17:03:57  profilanswer
 

HelloWorld a écrit :

Et tu peux pas la faire 99% transparente...,

Non. Je repete, les deux attributs (LWA_ALPHA et LWA_COLORKEY) sont independants. LWA_ALPHA sert à ajuster la transparence de l'ensemble de la fenetre, LWA_COLORKEY sert à rendre une couleur entièrement transparente. Or moi ce que je veux c'est que le fond de ma fenetre soit transparent, mais qu'on continue à voir ce qui est ecrit dedans -> donc je rends la couleur du fond de la fenetre transparent.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°579410
Anerty
Posté le 30-11-2003 à 14:22:53  profilanswer
 

Ouai pas evident en effet. Si le mode colorkey est plus utilisé pour détourer une fenetre de forme zarb que pour la rendre en partie transparente, c'est pas pour rien.
Si ton edit est entouré de bouts de fenetre a toi, genre un dialogue, tu peux toujours essayer de faire un SetCapture() quand la souris va entrer sur ton edit, genre dans le OnMouseMove() de la fenetre qui contient ton edit, et ReleaseCapture() quand elle en sors, via des tests dans le OnMouseMove() de ton edit, mais c'est un peu porc comme méthode. Si quelqu'un voit qqch de mieux...

n°902799
Antoinedev
Posté le 19-11-2004 à 14:34:00  profilanswer
 

R3g a écrit :

En gros, j'ai un éditeur de texte (une fenêtre toute con avec un EDIT dedans), et je voudrais que le fond soit transparent. J'ai trouvé à la faire en rendant la couleur de fond du contrôle transparente :

Code :
  1. SetWindowLong(hwndMain, GWL_EXSTYLE, WS_EX_LAYERED);
  2. SetLayeredWindowAttributes(hwndMain, RGB(255, 255, 255), LWA_COLORKEY);


Le fond de la fenêtre est bien transparent, et même trop : quand on clique dans la fenêtre, c'est la fenêtre en dessous qui reçoit le clic.
Donc ma question est simple : comment obtenir le même résultat tout en continuant à recevoir les clics ?


 
J'ai trouvé un exemlpe de code avec les API a utiliser mes sous WinDev pour faire cela. Tu peux peut etre t'en inspirer
 
http://freedev.windev.free.fr/PageCodeTransparence.htm


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [win32] fenêtre transparente ET clickable

 

Sujets relatifs
dimension d'un fenetre en pop upnommer une fenêtre en JS
[win32][newbie] Empecher un controle edit d'afficher son menu[win32] dll, import et calling convention...
Minimiser ma fenetre Dos[Javascript] Pb taille de fenêtre
[vba autocad] fenetre ancrable et laisser la main a l'utilisateurforcer execution script PHP ou empecher fermeture fenetre?
Fermer une fenetre IE ?[WIN32] SendMessage qui bloque. **new** code minimal qui buggue
Plus de sujets relatifs à : [win32] fenêtre transparente ET clickable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR