Comment créer une fenêtre transparente avec la non transparence des contrôles enfants (ou de l'enfant de windows)?
Tout d'abord, je suis en train de travailler sur Win32 en C++.
J'ai essayé de mettre en œuvre une fenêtre transparente avec une fenêtre enfant qui doit rester opaque à 100%. Il semble que les contrôles enfants ne peuvent pas avoir d'opacité mieux(plus bas) que le parent et si je fais de ma mère 100% transparent puis mon enfant de contrôle hérite également de la transparence.
Code que j'utilise -
SetLayeredWindowAttributes(GetParent(parentWindowHwnd), 0, 0, LWA_COLORKEY, LWA_ALPHA);
De l'aide?
Veuillez également répondre si je ne suis pas très claire à ma question.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire cela, malheureusement, les fenêtres enfants ont toujours la même opacité que celui de leur parent. La Google Barre d'outils de Bureau a une astuce pour donner l'illusion d'une matière opaque zone de texte sur une translucide arrière-plan. Ils ont créé deux fenêtres de niveau supérieur, celui de l'arrière-plan et un pour la zone de texte. Puis ils se mirent à la fenêtre d'arrière-plan en tant que propriétaire (pas le parent) de la texbox. Ils ont ensuite définir l'arrière-plan transparent. Il est tout à fait un peu de travail pour obtenir le droit, mais c'est la seule façon de le faire sans rendre le tout vous-même à l'aide de UpdateLayeredWindow.
Je suis certain que vous pouvez le faire dans l'autre sens, c'est à dire opaque de la fenêtre principale avec un transparent fenêtre enfant, de sorte que l'inverse peut aussi être vrai. Avez-vous essayé la suppression de la
WS_EX_LAYERED
drapeau de la enfant fenêtre, puis de le restituer pour le faire complètement opaque à nouveau?La page MSDN sur Les Fenêtres En Couches peut également aider.
Vous ne pouvez pas faire un contrôle enfant moins transparent que son parent. L'approche habituelle, ici, est de donner à votre fenêtre une forme irrégulière: pas un rectangle. C'est beaucoup plus âgé que la transparence alpha - Pensez à une application horloge: vous pouvez faire de votre fenêtre circulaire si vous le souhaitez, même sur windows 95.
Cela pourrait être fait à l'aide de la fonction Windows API
SetWindowRgn
:Un simple (vb) exemple
Les résultats de Google