Ho creato questa classe e funziona perfettamente per rendere trasparente la mia applicazione WPF agli eventi del mouse.Come posso rendere invisibile una finestra agli eventi del mouse in WPF?
using System.Runtime.InteropServices;
class Win32
{
public const int WS_EX_TRANSPARENT = 0x00000020;
public const int GWL_EXSTYLE = (-20);
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hwnd, int index);
[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
public static void makeTransparent(IntPtr hwnd)
{
// Change the extended window style to include WS_EX_TRANSPARENT
int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
}
public static void makeNormal(IntPtr hwnd)
{
//how back to normal what is the code ?
}
}
corro questo per rendere la mia domanda ignorare gli eventi del mouse, ma dopo eseguire il codice, voglio l'applicazione per tornare alla normalità e gestire di nuovo gli eventi del mouse. Come può farlo?
IntPtr hwnd = new WindowInteropHelper(this).Handle;
Win32.makeTransparent(hwnd);
Qual è il codice per ripristinare l'applicazione?
Grazie per tutte le risposte e per questo ma ...... Operatore '!' non può essere applicato all'operando di tipo "int" – Larsen187
@ Larsen187: Scusa, errore mio. Ho aggiornato il codice. Dovrebbe funzionare ora. Hai bisogno di un '' ', piuttosto che un'! '- quelli sono troppo vicini l'uno all'altro sulla tastiera. –
Ottimo questo lavoro perfetto !! Grazie! – Larsen187