DesktopWidth() und OpenWindow()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

DesktopWidth() und OpenWindow()

Beitrag 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]
PB 6.21 | Win 11
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Kann man das irgendwie berechnen oder so?
PB 6.21 | Win 11
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag 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.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Antworten