![]() |
Titelleiste eines Fensters ausblenden
Ich erzeuge ein Fenster über
Delphi-Quellcode:
Trotzdem hat es eine Titelleiste (die ich nicht brauchen kann), weshalb ich versucht habe sie über
CreateWindowEx(0, ClassName, AppName, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, HInstance, nil);
Delphi-Quellcode:
zu entfernen. Das Ergebnis sind allerdings eigenartige Darstellungsfehler.
SetWindowLong(HMainWnd, GWL_STYLE, GetWindowLong(HMainWnd, GWL_STYLE) and not WS_CAPTION);
Mit VCL funktioniert das über
Delphi-Quellcode:
Weiß jemand, was ich anders machen muss?
SetWindowLong(MyForm.Handle, GWL_STYLE, GetWindowLong(MyForm.Handle, GWL_STYLE) and not WS_CAPTION);
MyForm.ClientHeight := MyForm.Height; MyForm.Refresh; |
Re: Titelleiste eines Fensters ausblenden
Schon mal mit "MyForm.BorderStyle := bsNone;" versucht.
|
Re: Titelleiste eines Fensters ausblenden
Zitat:
|
Re: Titelleiste eines Fensters ausblenden
Was passiert, wenn du den Style gleich beim Erzeugen des Fensters angibst?
|
Re: Titelleiste eines Fensters ausblenden
Es gibt eben leider keinen Style für keine Titelleiste, sondern eben nur WS_CAPTION für eine Titelleiste - und das gebe ich ja nicht an.
Übrigens hat das Fenster auch eine Titelleiste wenn ich für Style nicht 0 sondern zum Beispiel WS_VISIBLE setze. Ach ja, ich arbeite unter Windows 98. |
Re: Titelleiste eines Fensters ausblenden
Chewie könnte recht haben.
Der Style kann'ste glaub ich hier ändern: CreateWindowEx(0, ClassName, AppName, 0, CW_USEDEFAULT... Die Werte dürften unter TCreateParams stehen. Da ich aber zur Zeit keine Hilfe installiert hab', kann ich auch nichts näheres dazu sagen. lass aber gerade nach anderen Styles suchen... |
Re: Titelleiste eines Fensters ausblenden
Ich habe gerade herausbekommen, dass alle TForm-Fenster mit dem Stil WS_POPUP definiert werden. Also hab ich das auch probiert und siehe da: Mit diesem Stil wird nur eine Titelleiste erzeugt, wenn man auch WS_CAPTION angibt.
Damit wäre mein Problem eigentlich gelöst, aber mich würde trotzdem noch interessieren wieso das mit WS_POPUP geht und sonst nicht (bzw. was der Stil WS_POPUP überhaupt bewirkt). |
Re: Titelleiste eines Fensters ausblenden
Tag Niko,
ich habe mich in letzter Zeit mit einem ganz ähnlichem Problem beschäftigt. Mir ging es nicht darum, dem Fenster die Leiste oben zu klauen, eher wohl das Fenster zu sperren. Du wolltest den Parameter WS_CAPTION raushauen und ich wollte WS_DISABLED reinbasteln. Zwei Ideen mit ein und demselben Lösungsweg. Ich hatte auch genau die gleichen Darstellungsfehler auf meiner Form und merkte das dein Problem auch bei mir auftauchte. Ich hatte darauf beschlossen Google.de aufzusuchen und dort brauchbares zu finden. Und tadaa: Des Fehlers Lösung war einfach eine falsche Verwendung der Delphi-Schlüsselwörter. Grund für die Darstellungsfehler: Der Styles-Eigenschaft eines Fenster wird Ramsch übergeben, nach dem Ausführen dieses Ramsch-Styles wird das Fenster falsch dargestellt. Lösung für die Übergabe: Es wird ein anderes Schlüsselwort benötigt, um aus Ramsch eine klare, brauchbare Anweisung zu machen, die Windows für seine Fenster braucht. Lösungsbeispiel:
Delphi-Quellcode:
[...]
var Fenster_stil : Cardinal; [...] // Speichern des Standardstils für Wiederherstellung des Fensters. Fenster_stil := GetWindowLong ( FormMain.hWnd, GWL_STYLE ); // Dem Fenster wird eine neue Eigenschaft hinzugefügt. SetWindowLong ( FormMain.hWnd, GWL_STYLE, Fenster_stil or WS_DISABLED ); // Das Fenster wird auf den alten Fenstertil zurückgesetzt. SetWindowLong ( FormMain.hWnd, GWL_STYLE, Fenster_stil ); [...] So, Meister, ich hoffe das hat dein Problem gedanklich gelöst. Dieser Thread ist mal wieder ein glänzendes Beispiel für die Ausarbeitung und Vollendung einer Idee durch verschiedenen User. Geniales Forum. :) Cii jaa©$me graphicar |
Re: Titelleiste eines Fensters ausblenden
Äh. Das muss auch direkt gehen, schon beim erzeugen:
Delphi-Quellcode:
Allerdings hat es jetzt auch keinen Rand.
CreateWindowEx(0, ClassName, AppName, WS_VISIBLE or WS_POPUP,
Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), WINDOWWIDTH, WINDOWHEIGHT, 0, 0, hInstance, nil); |
Re: Titelleiste eines Fensters ausblenden
@graphicar:
Danke für die Antwort, aber ich seh' den Unterschied zwischen deinem Code und dem in meinem ersten Beitrag nicht. :gruebel: @Luckie: So funktioniert's, wenn ich aber WS_POPUP weggelassen habe ging es nicht mehr und ich weiß nicht, warum. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz