WPF: Machen Sie Fenster unlimitierbar, aber behalten Sie den Rahmen?

7

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.

    
Sasha Chedygov 02.08.2010, 09:26
quelle

4 Antworten

9

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.

    
Eric Brown 11.08.2010, 20:54
quelle
9

Basierend auf Erics Antwort.

%Vor%     
Cameron MacFarland 26.08.2010 03:26
quelle
1

Ein hackischer Weg wäre es, die Eigenschaften MinWidth / MaxWidth und MinHeight / MaxHeight so einzustellen, dass sie praktisch unwiderruflich werden. Natürlich, das Problem dort ist immer noch die Größe Cursor über die Grenzen.

    
RQDQ 02.08.2010 15:55
quelle
1

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!

    
Kevin 02.08.2010 16:00
quelle

Tags und Links