2009-06-21 7 views
0

J'essaye de créer une application qui rend une fenêtre (externe à l'application) transparente quand elle perd le focus. La plupart des choses (obtenir l'identifiant de la fenêtre, définir la transparence, etc.) seraient faciles, sauf une chose - comment puis-je accrocher les fenêtres?Comment puis-je accrocher plusieurs fenêtres en C#?

+0

En supposant que ce soit WinForms ... – Noldorin

+0

@Noldorin // Oui – Moon

Répondre

1

Vous pouvez utiliser interop. Utilisez la fonction SendMessage() pour envoyer un message personnalisé à votre fenêtre. La fenêtre peut alors appeler SetLayeredWindowAttributes() une fois que vous recevez ce message pour changer sa transparence.

L'autre chose est que vous devriez vraiment être en mesure de faire tourner la fenêtre LUI-MÊME transparent quand il perd le focus en écoutant WM_KILLFOCUS

EDIT:

Latch sur les événements et Deactivate activés en C#.

 
    private void Form1_Deactivate(object sender, EventArgs e) 
    { 
     this.Opacity = 0.5 ; 
    } 

    private void Form1_Activated(object sender, EventArgs e) 
    { 
     this.Opacity = 1.0 ; 
    } 
Questions connexes