AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Titelleiste eines Fensters ausblenden
Thema durchsuchen
Ansicht
Themen-Optionen

Titelleiste eines Fensters ausblenden

Ein Thema von Niko · begonnen am 13. Okt 2003 · letzter Beitrag vom 30. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#1

Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 18:03
Ich erzeuge ein Fenster über
CreateWindowEx(0, ClassName, AppName, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, HInstance, nil); Trotzdem hat es eine Titelleiste (die ich nicht brauchen kann), weshalb ich versucht habe sie über
SetWindowLong(HMainWnd, GWL_STYLE, GetWindowLong(HMainWnd, GWL_STYLE) and not WS_CAPTION); zu entfernen. Das Ergebnis sind allerdings eigenartige Darstellungsfehler.

Mit VCL funktioniert das über
Delphi-Quellcode:
SetWindowLong(MyForm.Handle, GWL_STYLE, GetWindowLong(MyForm.Handle, GWL_STYLE) and not WS_CAPTION);
MyForm.ClientHeight := MyForm.Height;
MyForm.Refresh;
Weiß jemand, was ich anders machen muss?
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 18:39
Schon mal mit "MyForm.BorderStyle := bsNone;" versucht.
$2B or not $2B
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 19:58
Zitat von himitsu:
Schon mal mit "MyForm.BorderStyle := bsNone;" versucht.
Ja, genau das was dabei herauskommt möchte ich erreichen, aber eben nicht bei einer TForm, sondern bei einem über die API-Funktion CreateWindowEx erstellten Fenster.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 20:01
Was passiert, wenn du den Style gleich beim Erzeugen des Fensters angibst?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 20:19
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.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 20:37
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...
$2B or not $2B
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Titelleiste eines Fensters ausblenden

  Alt 13. Okt 2003, 20:51
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).
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
graphicar
(Gast)

n/a Beiträge
 
#8

Re: Titelleiste eines Fensters ausblenden

  Alt 29. Jul 2004, 14:54
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Titelleiste eines Fensters ausblenden

  Alt 29. Jul 2004, 15:00
Äh. Das muss auch direkt gehen, schon beim erzeugen:
Delphi-Quellcode:
CreateWindowEx(0, ClassName, AppName, WS_VISIBLE or WS_POPUP,
    Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), WINDOWWIDTH, WINDOWHEIGHT,
      0, 0, hInstance, nil);
Allerdings hat es jetzt auch keinen Rand.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Titelleiste eines Fensters ausblenden

  Alt 29. Jul 2004, 16:58
@graphicar:
Danke für die Antwort, aber ich seh' den Unterschied zwischen deinem Code und dem in meinem ersten Beitrag nicht.

@Luckie:
So funktioniert's, wenn ich aber WS_POPUP weggelassen habe ging es nicht mehr und ich weiß nicht, warum.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz