Registrando uma classe de janela personalizada do win32 a partir de c #

Eu tenho um novo aplicativo escrito no WPF que precisa oferecer suporte a uma API antiga que permite que ele receba uma mensagem que foi lançada em uma janela oculta. Normalmente outro aplicativo usa FindWindow para identificar a janela oculta usando o nome de sua classe de janela personalizada.

1) Eu suponho que para implementar uma classe de janela personalizada eu preciso usar chamadas win32 da velha escola?

Meu antigo aplicativo c ++ usava RegisterClass e CreateWindow para tornar a janela invisível mais simples possível.

Eu acredito que eu deveria ser capaz de fazer o mesmo tudo dentro de c #. Eu não quero que meu projeto tenha que compilar qualquer código não gerenciado.

Eu tentei herdar de System.Windows.Interop.HwndHost e usando System.Runtime.InteropServices.DllImport para puxar os métodos de API acima.

Fazendo isso eu posso hospedar com sucesso uma janela padrão win32, por exemplo. "listbox" dentro do WPF. No entanto, quando eu chamo CreateWindowEx para minha janela personalizada, sempre retorna null.

Minha chamada para RegisterClass é bem-sucedida, mas não tenho certeza do que devo definir o membro WNDCLASS.lpfnWndProc para.

2) Alguém sabe como fazer isso com sucesso?

questionAnswers(4)

yourAnswerToTheQuestion