Niedawno musiałem rozwiązać podobny problem. Odpowiedź Abla postawiła mnie we właściwym kierunku. Powyżej znajduje się pełna przykładów, jak to zrobiłem, zmieniając normalne okno do wiadomości-jedynego okna:
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
}
}
zwrócić uwagę na konstruktora: Odkryłem, że muszę dostępu do właściwości uchwytu lub inaczej metoda OnHandleCreated nie zostanie wywołana. Nie jestem pewien powodu, może ktoś może wyjaśnić dlaczego.
wierzę mój przykładowy kod również odpowie powiązany pytanie: How do I create a message-only window from windows forms?
Czy zostały patrząc na 'NC_ * 'wiadomości? Podobnie jak wskaźnik w pasku tytułu, może to być także obszar "poza obszarem klienta". Ponadto: co masz na myśli z wiadomościami w oknie? Jak wtedy, gdy mysz unosi się nad zminimalizowaną formą? – Abel