Höhe der Titelleiste ändern

Anfängerfragen zum Programmieren mit PureBasic.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Höhe der Titelleiste ändern

Beitrag von Andesdaf »

Hallo,
wie kann ich bei normalen Fenstern unter Windows die Höhe der Titelleiste
ändern? Bestimmte Windows-Programme haben sozusagen 'Multiline'
Titelleisten. Wie kann man das machen?
Win11 x64 | PB 6.20
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Ich weiß nicht, wie das genau gemeint ist, aber Windows selbst legt die Breite der Titelleisten selbst fest. Was Du als "Multiline" bezeichnest, wird daher wahrscheinlich durch ein Bild erzeugt. Vielleicht könntest Du ein Bild mitliefern?
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Re: Höhe der Titelleiste ändern

Beitrag von Dare Devil »

Andesdaf hat geschrieben:Hallo,
wie kann ich bei normalen Fenstern unter Windows die Höhe der Titelleiste
ändern? Bestimmte Windows-Programme haben sozusagen 'Multiline'
Titelleisten. Wie kann man das machen?
Noch nie gesehen.
Koenntest du das mal anhand eines Screenshots zeigen, was du meinst?

Ansonsten faellt mir nur die Moeglichkeit ein, die Titelleiste selbst zu designen...
Bild + Bild

Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Die Höhe der Titelleisten von Fenstern ist eine globale Systemeinstellung. Die lässt sich nicht ohne weiteres ändern. Du kannst nur unter "Anzeige/Darstellung" die Höhe manuell für alle einstellen. Wenn du das wirklich programmiertechnisch lösen willst kommst ums Selberzeichnen nicht rum.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Fluid Byte hat geschrieben:Die Höhe der Titelleisten von Fenstern ist eine globale Systemeinstellung. Die lässt sich nicht ohne weiteres ändern. Du kannst nur unter "Anzeige/Darstellung" die Höhe manuell für alle einstellen. Wenn du das wirklich programmiertechnisch lösen willst kommst ums Selberzeichnen nicht rum.
Stellt sich nur die Frage, wie das zu realisieren ist... Wie "imitiert" man so eine Move-Funktion (wenn man in die Titelleiste klickt und dann das Fenster verschiebt)? Minimieren und x-Knopf sind ja klar...
Bild + Bild

Bild
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Also ich hab mich in das Thema "Selberzeichnen" mal etwas hineinversetzt und mir meinen eigenen "Style" programmiert.

Wollte jetzt dafuer keinen anderen extra Thread aufmachen, deswegen poste ich das mal hier. Hat ja im entfernteren Sinne auch noch was mit Andesdafs Problem zu tun.

Code: Alles auswählen

OpenWindow(0, 0, 0, 300, 200, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess); | #PB_Window_BorderLess)

CreateGadgetList(WindowID(0))


Repeat
  StartDrawing(WindowOutput(0))
  blue = 30
  For i = 0 To 30
    blue + 4
    Line(0, i, WindowWidth(0), 0, RGB(0, 0, blue))
  Next

  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText(5, 5, "Mein eigenes Fenster", RGB(255, 255, 255))
  
  Box(270, 5, 20, 20, RGB(0, 0, 250))
  Line(272, 21, 16, -16, $FFFFFF)
  Line(287, 21, -16, -16, $FFFFFF)
  
  Box(220, 5, 20, 20, RGB(0, 0, 250))
  Line(225, 15, 10, 0, $FFFFFF)
  
  DrawingMode(#PB_2DDrawing_Outlined)
  Box(220, 5, 20, 20, 0)
  Box(270, 5, 20, 20, 0)
  
  Box(0, 0, 300, 200, RGB(0, 0, 255))
  Box(1, 1, 298, 198, RGB(0, 0, 255))
  StopDrawing()

  Repeat
    EventID = WindowEvent()
    Delay(1)
    If EventID = #PB_Event_Repaint
      Break
    EndIf
  Until GetAsyncKeyState_(#VK_LBUTTON) Or EventID = #True Or klick = 1
  
  If EventID = #PB_Event_Repaint
    Continue
  EndIf
  
  If GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseX(0) >= 220 And WindowMouseX(0) <= 240 And WindowMouseY(0) >= 5 And WindowMouseY(0) <= 25
    SetWindowState(0, #PB_Window_Minimize)
  ElseIf GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseX(0) > 270 And WindowMouseX(0) <= 290 And WindowMouseY(0) >= 5 And WindowMouseY(0)  <= 25
    SendMessage_(WindowID(0), #WM_CLOSE, 0, 0)
  ElseIf GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseY(0) < 40
    If klick = 0
      oldmousex = WindowMouseX(0)
      oldmousey = WindowMouseY(0)
      klick + 1
    ElseIf klick = 1     
      If WindowMouseX(0) > oldmousex
        ResizeWindow(0, WindowX(0)+(WindowMouseX(0)-oldmousex), WindowY(0), 300, 200)
        oldmousex = WindowMouseX(0)
      ElseIf WindowMouseX(0) < oldmousex
        ResizeWindow(0, WindowX(0)-(oldmousex - WindowMouseX(0)), WindowY(0), 300, 200)
        oldmousex = WindowMouseX(0)
      EndIf
      
      If WindowMouseY(0) > oldmousey
        ResizeWindow(0, WindowX(0), WindowY(0)+ (WindowMouseY(0) - oldmousey), 300, 200)
        oldmousey = WindowMouseY(0)
      ElseIf WindowMouseY(0) < oldmousey
        ResizeWindow(0, WindowX(0), WindowY(0)- (oldmousey - WindowMouseY(0)), 300, 200)
        oldmousey = WindowMouseY(0)
      EndIf
    EndIf
  Else
    klick = 0
    oldmousex = 0
    oldmousey = 0
  EndIf
Until EventID = #PB_Event_CloseWindow
Die Buttons sind natuerlich nur provisorisch schnell gezeichnet - das muss ich grafisch noch aufpeppen.
Also Minimieren klappt wunderbar. Und die Schliessen-Funktion auch (mit SendMessage() natuerlich).
Aber bei der Move-Funktion happerts. Hat jemand ne Idee wie ich das fluessiger machen koennte? Es funktioniert halt nicht so richtig wie bei den "normalen" Windows-Fenstern... Oder gibts vllt noch ne andere API-Loesung das zu realisieren... waere sehr dankbar fuer eure Hilfe...
Bild + Bild

Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Bild

Der "Schließen"-Schalter befindet sich oberhalb von dem Titeltext und dem
Icon.

Ist genauso ein normaler Windows-Vista-Standard-Aero-Style.
Win11 x64 | PB 6.20
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Ja ich schaetze mal das das Aendern der Groesse der Titelleiste zumindest bei Vista moeglich ist. Kann man ja leicht ueberpruefen.
Aendere mal den Fensterstil fuer alle Programm auf XP-Style oder was weiss ich was es bei Vista gibt (hab kein Vista) und schau mal, ob sich der Stil veraendert hat. Wenn es immernoch dieses Vista-Style hat dann wurde selbst gezeichnet schaetz ich mal.
Bild + Bild

Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Ich kann in Vista leider nicht mehr auf XP Style zurückschalten...
dafür aber auf Windows 2000 (klassisch)-Stil. Und dort offenbart sich mir
folgendes:

Es gibt eine ganz normale Titelleiste, mit "Filmveröffentlichung" überschrieben
Darunter befindet sich eine Art Toolbar, die das Icon, den zurück-Pfeil und
noch einmal den Text "Filmveröffentlichung". Unterm Vista-Style wird das
wohl alles nur gleich transparent gemacht und sieht deshalb aus wie eine
zweizeilige Titelleiste. Unter dem klassischen Stil ist die Titelleiste normal
blau und die Toolbar hat die Farbe des Fensters, so ein grau.

[OT]
Schaltet euch mal unter Vista den klassischen Stil ein. Für mich, der Aero
gewöhnt ist, ist das Aussehen so schrecklich. *Schnell-wieder-umschalt*
[/OT]
Win11 x64 | PB 6.20
Antworten