fenêtre transparente ET clickable [win32] - C - Programmation
Marsh Posté le 14-11-2003 à 12:59:25
heupe !
Marsh Posté le 14-11-2003 à 13:07:03
chrisbk a écrit : dsl aucune idee, mais franchement l'API win32, t sur ? |
Oui. Quoi d'autre ? MFC ? WinFX ?
J'ai envie de faire du win32, c'est une expérience.
Marsh Posté le 14-11-2003 à 13:07:59
R3g a écrit : Oui. Quoi d'autre ? MFC ? WinFX ? |
Winforms
R3g a écrit : |
Ah ca, on s'en rapelle longtemps
(mais au moins on sait comment ca fonctionne par derriere, parfois c bien pratique)
Marsh Posté le 14-11-2003 à 13:13:51
winforms c'est .NET, c'est ça ?
Marsh Posté le 14-11-2003 à 13:14:53
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 ?
Marsh Posté le 14-11-2003 à 13:16:20
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.
Marsh Posté le 14-11-2003 à 17:03:51
Bon, et sinon, quelqu'un aurait une suggestion ?
Marsh Posté le 14-11-2003 à 17:46:43
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.
Marsh Posté le 14-11-2003 à 17:50:07
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. |
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.
Marsh Posté le 14-11-2003 à 17:55:03
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.
Marsh Posté le 15-11-2003 à 11:54:32
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.
Marsh Posté le 20-11-2003 à 14:04:36
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.
Marsh Posté le 20-11-2003 à 17:33:06
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.
Marsh Posté le 21-11-2003 à 13:33:27
ReplyMarsh Posté le 22-11-2003 à 17:03:57
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.
Marsh Posté le 30-11-2003 à 14:22:53
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...
Marsh Posté le 19-11-2004 à 14:34:00
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 :
|
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
Marsh Posté le 13-11-2003 à 19:43:48
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 :
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.