Seite 1 von 1

Höhe der Titelleiste ändern

Verfasst: 14.12.2008 19:36
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?

Verfasst: 14.12.2008 20:34
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?

Re: Höhe der Titelleiste ändern

Verfasst: 15.12.2008 18:26
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...

Verfasst: 15.12.2008 18:56
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.

Verfasst: 15.12.2008 19:06
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...

Verfasst: 16.12.2008 15:50
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...

Verfasst: 16.12.2008 17:14
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.

Verfasst: 16.12.2008 17:49
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.

Verfasst: 16.12.2008 18:05
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]