Registro de una clase de ventana win32 personalizada desde c #

Tengo una nueva aplicación escrita en WPF que necesita admitir una API antigua que le permite recibir un mensaje que se ha publicado en una ventana oculta. Normalmente, otra aplicación utiliza FindWindow para identificar la ventana oculta usando el nombre de su clase de ventana personalizada.

1) ¿Supongo que para implementar una clase de ventana personalizada necesito usar las llamadas win32 de la vieja escuela?

Mi antigua aplicación de c ++ usaba RegisterClass y CreateWindow para hacer la ventana invisible más simple posible.

Creo que debería poder hacer lo mismo todo dentro de c #. No quiero que mi proyecto tenga que compilar ningún código no administrado.

He intentado heredar de System.Windows.Interop.HwndHost y usar System.Runtime.InteropServices.DllImport para extraer los métodos API anteriores.

Al hacer esto, puedo alojar con éxito una ventana estándar de win32, p. Ej. "cuadro de lista" dentro de WPF. Sin embargo, cuando llamo a CreateWindowEx para mi ventana personalizada, siempre devuelve nulo.

Mi llamada a RegisterClass se realiza correctamente, pero no estoy seguro de a qué debo estar configurando el miembro WNDCLASS.lpfnWndProc.

2) ¿Alguien sabe cómo hacer esto con éxito?

Respuestas a la pregunta(4)

Su respuesta a la pregunta