PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Minimale Fenstergröße reduzieren (Win32-API)


Neomi
2005-10-12, 03:14:41
N'Abend!

Heute habe ich eine Floaterklasse für einen Editor fertiggestellt, fast zumindest. So sieht er aus:

http://img448.imageshack.us/img448/2274/floater3qf.gif (http://imageshack.us)

Und da ist auch schon mein Problem zu sehen. Toolwindows kann ich nicht kleiner machen als normale Fenster mit größerer Titelleiste, dabei bleibt eine Clientarea von 3 Pixeln Höhe übrig. Zumindest unter Windows 2000, andere Systeme habe ich damit noch nicht getestet.

Gibt es irgendeine halbwegs saubere Möglichkeit, diese Grenze noch zu unterschreiten? Ich nutze die Win32-API ohne Umweg über MFC oder ähnliches Gedöhns.

Coda
2005-10-12, 03:51:37
Ich fürchte du kommst wohl nicht drumrum das Fenster selber zu rendern.

Asmodeus
2005-10-12, 07:21:33
Mal ganz blöd gefragt, stört Dich daran, dass allgemein die drei Pixelreihen noch mit angezeigt werden, das Fenster dadurch also zu groß ist, oder stört Dich daran nur, dass in diesen drei Pixelreihen noch die Oberkanten der Button-Elemente zu sehen sind? Falls es nur um die noch sichtbaren Button-Elemente geht, die könnte man ja vielleicht einfach ausblenden, wenn das Fenster eine gewisse Größe unterschreitet.

Gruss, Carsten.

Neomi
2005-10-12, 11:57:51
Mal ganz blöd gefragt, stört Dich daran, dass allgemein die drei Pixelreihen noch mit angezeigt werden, das Fenster dadurch also zu groß ist, oder stört Dich daran nur, dass in diesen drei Pixelreihen noch die Oberkanten der Button-Elemente zu sehen sind? Falls es nur um die noch sichtbaren Button-Elemente geht, die könnte man ja vielleicht einfach ausblenden, wenn das Fenster eine gewisse Größe unterschreitet.

Beides irgendwie. Die Buttons auszublenden ist zwar simpel, muß aber in jeder vom Floater abgeleiteten Klasse einzeln umgesetzt werden. Und dann bleibt immer noch ein häßlicher (da viel zu dicker) Rand übrig. Da bin ich viel zu sehr Perfektionist, um mich mit so einem Rand einfach abzufinden.

Neomi
2005-10-12, 12:18:17
Ich fürchte du kommst wohl nicht drumrum das Fenster selber zu rendern.

Das tue ich eigentlich schon, da ich anders nicht den Button zum Auf- und Zuklappen umsetzen konnte. Das bringt mich aber gerade auf eine andere Idee. Ich könnte das Fenster komplett verstecken und durch ein anderes ersetzen, das keine eigene Titelleiste hat, sondern einen Fake in seinem Clientbereich zeichnet. Das werde ich heute Abend erstmal ausprobieren.

Neomi
2005-10-13, 02:16:48
Heureka! Die Sache mit dem Extrafenster und der Fakecaption in dessen Clientarea funktioniert! :)

Das löst sogar gleich noch ein paar andere Probleme zusätzlich. Die Verwaltung ist teilweise deutlich simpler. Ich muß nichtmal die Controls innerhalb des Floaters verstecken oder deaktivieren, wenn der eigentliche Floater komplett versteckt ist. Wären die drei Pixelreihen nicht gewesen und ich ohne das Extrafenster ausgekommen, hätte ich bei der Tastaturnavigation sonst noch ein paar Dinge abfangen müssen.

Der einzige Nachteil ist, daß ich die beiden Fenster (nur im minimierten Zustand existieren beide gleichzeitig) bei Bewegungen, Änderungen des Fenstertitels und noch ein paar Dingen synchronisieren muß. Aber das ist recht einfach lösbar und muß eh nur einmal implementiert werden.