(Win32) ClientX() ClientY() ClientBorder() ClientTitleBar()

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

(Win32) ClientX() ClientY() ClientBorder() ClientTitleBar()

Beitrag von nco2k »

hi,

weil ich mich geärgert hab, dass purebasic über keine client-size befehle verfügt, habe ich auf die schnelle ein paar nützliche und stark vereinfachte prozeduren geschrieben. vielleicht kann es ja mal jemand gebrauchen. :wink:

Code: Alles auswählen

Procedure WindowClientX(Window)
  WindowClientRect.RECT
  GetWindowRect_(WindowID(Window), @WindowClientRect)
  WindowClientPoint.POINT
  ClientToScreen_(WindowID(Window), @WindowClientPoint)
  ProcedureReturn WindowX(Window) + (WindowClientPoint\x - WindowClientRect\left)
EndProcedure

Procedure WindowClientY(Window)
  WindowClientRect.RECT
  GetWindowRect_(WindowID(Window), @WindowClientRect)
  WindowClientPoint.POINT
  ClientToScreen_(WindowID(Window), @WindowClientPoint)
  ProcedureReturn WindowY(Window) + (WindowClientPoint\y - WindowClientRect\top)
EndProcedure

Procedure WindowBorder(Window)
  ProcedureReturn WindowClientX(Window) - WindowX(Window)
EndProcedure

Procedure WindowTitleBar(Window)
  ProcedureReturn WindowClientY(Window) - WindowY(Window) - WindowBorder(Window)
EndProcedure

Procedure WindowRealWidth(Window)
  ProcedureReturn WindowWidth(Window) + (WindowBorder(Window) * 2)
EndProcedure

Procedure WindowRealHeight(Window)
  ProcedureReturn WindowTitleBar(Window) + WindowHeight(Window) + (WindowBorder(Window) * 2)
EndProcedure
und hier noch ein kleiner beispiel code, einfach die oberen prozeduren als "ClientSize.pbi" abspeichern und den pfad im unteren code, dementsprechend anpassen.

Code: Alles auswählen

IncludeFile "ClientSize.pbi"

If OpenWindow(0, 0, 0, 320, 240, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered, "Window- & ClientSize Demo")
  
  If CreateGadgetList(WindowID(0))
    TextGadget(0, 5, 5, 145, 15, "")
    TextGadget(1, 5, 20, 145, 15, "")
    TextGadget(2, 5, 50, 145, 15, "")
    TextGadget(3, 5, 65, 145, 15, "")
    TextGadget(4, 5, 95, 145, 15, "")
    TextGadget(5, 5, 110, 145, 15, "")
    TextGadget(6, 5, 140, 145, 15, "")
    TextGadget(7, 5, 155, 145, 15, "")
    TextGadget(8, 5, 185, 145, 15, "")
    TextGadget(9, 5, 200, 145, 15, "")
    
    Repeat
      
      Event = WaitWindowEvent()
      
      SetGadgetText(0, "WindowX = "+Str(WindowX(0)))
      SetGadgetText(1, "WindowY = "+Str(WindowY(0)))
      SetGadgetText(2, "WindowWidth = "+Str(WindowWidth(0)))
      SetGadgetText(3, "WindowHeight = "+Str(WindowHeight(0)))
      SetGadgetText(4, "WindowRealWidth = "+Str(WindowRealWidth(0)))
      SetGadgetText(5, "WindowRealHeight = "+Str(WindowRealHeight(0)))
      SetGadgetText(6, "WindowClientX = "+Str(WindowClientX(0)))
      SetGadgetText(7, "WindowClientY = "+Str(WindowClientY(0)))
      SetGadgetText(8, "WindowBorder = "+Str(WindowBorder(0)))
      SetGadgetText(9, "WindowTitleBar = "+Str(WindowTitleBar(0)))
      
    Until Event = #PB_Event_CloseWindow
    
  EndIf
  
EndIf

End
wäre auch sicherlich was für GPI's JaPBe IncludePack und Andre's CodeArchive, sofern noch nicht vorhanden.

c ya,
nco2k
Zuletzt geändert von nco2k am 23.02.2006 04:07, insgesamt 6-mal geändert.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

wäre auch sicherlich was für GPI's JaPBe IncludePack und Andre's CodeArchive, sofern noch nicht vorhanden.
Im CodeArchiv wird's sicher auch landen. :D
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten