También he necesitado resolver un problema similar recientemente. La respuesta de Abel me puso en la dirección correcta. Aquí está un ejemplo completo de cómo lo hice, cambiando una ventana normal en un mensaje de sólo ventana:
class MessageWindow : Form {
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
public MessageWindow() {
var accessHandle = this.Handle;
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
ChangeToMessageOnlyWindow();
}
private void ChangeToMessageOnlyWindow() {
IntPtr HWND_MESSAGE = new IntPtr(-3);
SetParent(this.Handle, HWND_MESSAGE);
}
protected override void WndProc(ref Message m) {
// respond to messages here
}
}
Prestar atención al constructor: Me he dado cuenta que necesito para acceder a la propiedad de la manija o de otra manera el método OnHandleCreated no se llamará. No estoy seguro de la razón, tal vez alguien puede explicar por qué.
Creo que mi código de ejemplo también responder a una pregunta relacionada: How do I create a message-only window from windows forms?
¿Ha estado buscando en el 'NC_ * 'mensajes? Al igual que el control deslizante en la barra de título, esto también podría ser un "área no cliente". Además, ¿qué quieres decir con los mensajes de la ventana? ¿Como cuando un mouse está sobre la forma minimizada? – Abel