Seite 1 von 1

DesktopWidth() und OpenWindow()

Verfasst: 27.01.2009 01:31
von Delle
Hallo,

weiß jemand warum das Fenster so komisch versetzt ist?

Also das Icon oben klebt etwas zu weit links...

Muss man ev. von DestopWidth() noch etwas abziehen für den Rand oder?

Code: Alles auswählen

ExamineDesktops()

OpenWindow(0,0,0,DesktopWidth(0),DesktopHeight(0),"Test",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Maximize)

WebGadget(0,0,0,WindowWidth(0),WindowHeight(0),"http://www.purebasic.com")

Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow

[/code]

Verfasst: 27.01.2009 02:35
von Kaeru Gaman
> Muss man ev. von DestopWidth() noch etwas abziehen für den Rand oder?
yup.
die breite und höhe die du angibst sind die inneren maße.

Verfasst: 27.01.2009 02:40
von Delle
Kann man das irgendwie berechnen oder so?

Verfasst: 27.01.2009 02:52
von Kaeru Gaman
mir ist vor längerem irgendwo ne API funktion begegnet, die die werte zurückgibt...
keine ahnung wo und wie die hieß... :(

muss man immer aktuell machen, weil das von skin zu skin unterschiedlich sein kann.

ich würde erstmal rumprobieren, ob das was bringt, das fenster maximiert zu öffnen und für die Maße Ingore einzusetzen....
ob das dann beim wiederherstellen die maximale größe besitzt.

Verfasst: 27.01.2009 17:34
von Josef Sniatecki
Habs gefunden:

Code: Alles auswählen

#CCHILDREN_TITLEBAR = 5

Structure TITLEBARINFO
  cbSize.l
  rcTitleBar.RECT
  rgstate.l[#CCHILDREN_TITLEBAR+1]
EndStructure

pti.TITLEBARINFO\cbSize = SizeOf(TITLEBARINFO)

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  GetTitleBarInfo_(WindowID(0),pti)
  MessageRequester("","Höhe der Titelleiste: "+Str(pti\rcTitleBar\bottom-pti\rcTitleBar\top),0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
War auf der Homepage von RSBasic zu finden :wink:.

EDIT:
Hier nochmal als praktische Prozedur:

Code: Alles auswählen

Procedure.i GetWindowTitleHeight(Window.i)
  #CCHILDREN_TITLEBAR=5
  
  Structure TITLEBARINFO
    cbSize.l
    rcTitleBar.RECT
    rgstate.l[#CCHILDREN_TITLEBAR+1]
  EndStructure
  
  Protected PTI.TITLEBARINFO
  
  PTI\cbSize=SizeOf(TITLEBARINFO)
  GetTitleBarInfo_(WindowID(Window),@PTI)
  ProcedureReturn PTI\rcTitleBar\bottom-pti\rcTitleBar\top
EndProcedure
EDIT: Gillt jedoch nur für die Titelleiste. Für die Länge habe ich keine
Lösung.