Ich habe ein Fenster, das keine Titelleiste hat ( WindowStyle == WindowStyle.None
). Das gesamte Fenster nutzt den Aero-Glas-Effekt. Wenn ich das Fenster nicht veränderbar mache ( ResizeMode == ResizeMode.NoResize
), verschwindet der Glaseffekt und meine Steuerelemente hängen gerade in der Luft. (Im Wesentlichen verschwindet das Fenster selbst aber hinterlässt seinen Inhalt.)
Gibt es eine Möglichkeit für mich, das Fenster unwiderruflich zu machen, ohne den Fensterrahmen loszuwerden?
Ich habe die Frage Vista-Glas aktivieren gelesen Effekt auf ein grenzenloses WPF-Fenster , aber das ist nicht ganz das, was ich will - ich möchte den Fensterrahmen behalten. Um ein Beispiel zu sehen, wie mein Fenster aussehen soll, drücken Sie Alt + Tab mit aktiviertem Aero.
Zur Klarstellung: Ich möchte nicht, dass die Größenänderungscursor angezeigt werden, wenn Sie über den Fensterrahmen fahren. Das ist im Wesentlichen, wie ich mein Fenster aussehen möchte:
Projektor http://i37.tinypic.com/2mg4jty.png
Die Lösung muss nicht unbedingt WPF sein - mir geht es gut mit der Win32-API herumzuhacken, um dies zu erreichen.
Sie können den wndproc anhängen und die WM_WINDOWPOSCHANGING Nachricht abfangen. Nicht unbedingt WPF, aber wahrscheinlich deine beste Wette.
Wenn Sie die Größenänderungscursor ausblenden möchten, ist es am besten, abzufangen WM_NCHITTEST . Rufen Sie das DefWindowProc auf (um das Standardverhalten zu erhalten), und testen Sie den Rückgabewert; Wenn es HTBOTTOM, HTBOTTOMLEFT, HTBOTTOMRIGHT, HTTOP, HTTOPLEFT oder HTTOPRIGHT ist, ändern Sie den Rückgabewert in HTBORDER.
Warum erstellen Sie nicht einfach diesen Fensterrahmen für das Fenster? Es verwendet einen Offset, um die Farben des Fensters einzustellen. Also, ein einfacher Weg ist es, einen ganzen Rahmen um dein Fenster zu wickeln und darüber hinaus bekommst du deine eigenen Farben!
Tags und Links wpf c# windows window-resize aero