Creé esta clase, y funciona perfectamente para hacer que mi aplicación WPF sea transparente a los eventos del mouse.¿Cómo puedo hacer que una ventana sea invisible para los eventos del mouse en 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 esto para hacer mi solicitud ignorar eventos de ratón, pero después de ejecutar el código, quiero que la aplicación vuelva a la normalidad y manejar los eventos del ratón de nuevo. ¿Cómo puede hacer eso?
IntPtr hwnd = new WindowInteropHelper(this).Handle;
Win32.makeTransparent(hwnd);
¿Cuál es el código para hacer que la aplicación vuelva a la normalidad?
Gracias por todas las respuestas y por esto, pero ...... Operador '!' no se puede aplicar al operando de tipo 'int' – Larsen187
@ Larsen187: Lo siento, mi error. He actualizado el código. Debería funcionar ahora. Necesita un '~', en lugar de '!', Esos están demasiado cerca el uno del otro en el teclado. –
Genial este trabajo perfecto !! ¡Gracias! – Larsen187