Das Verhalten mein ich ja.
kompatibel mit 'ResizeWindow()' ist.
Ich hab den Code um einen Button erweitert.
um einen Pixel vergrößert. Ist das Menü aber mehrzeilig, verliert das
Fenster an Höhe, was sicherlich nicht so erwünscht ist.
Code: Alles auswählen
Enumeration
#txt_ClientWidth
#txt_ClientHeight
#txt_WindowWidth
#txt_WindowHeight
#txt_PBWidth
#txt_PBHeight
#txt_MenuHeight
#txt_PBH_MenHight
#str_ClientWidth
#str_ClientHeight
#str_WindowWidth
#str_WindowHeight
#str_PBWidth
#str_PBHeight
#str_MenuHeight
#str_PBH_MenHight
#chk_Menu
#btn_Resize
EndEnumeration
hwnd = OpenWindow(0, 0, 0, 640, 480, "Client Window", #WS_OVERLAPPEDWINDOW)
CreateGadgetList(hwnd)
TextGadget(#txt_ClientWidth, 5,5, 70, 20, "ClientWidth")
StringGadget(#str_ClientWidth, 80, 5, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_ClientHeight, 115,5, 70, 20, "ClientHeight")
StringGadget(#str_ClientHeight, 190, 5, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_WindowWidth, 5, 30, 70, 20, "WindowWidth")
StringGadget(#str_WindowWidth, 80, 30, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_WindowHeight, 115, 30, 70, 20, "WindowHeight")
StringGadget(#str_WindowHeight, 190, 30, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_PBWidth, 5, 55, 70, 20, "PBWidth")
StringGadget(#str_PBWidth, 80, 55, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_PBHeight, 115, 55, 70, 20, "PBHeight")
StringGadget(#str_PBHeight, 190, 55, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_MenuHeight, 5, 80, 70, 20, "MenuHeigh")
StringGadget(#str_MenuHeight, 80, 80, 30, 20, "", #PB_String_ReadOnly)
TextGadget(#txt_PBH_MenHight, 115, 80, 70, 20, "PBH - MH")
StringGadget(#str_PBH_MenHight, 190, 80, 30, 20, "", #PB_String_ReadOnly)
CheckBoxGadget(#chk_Menu, 5, 105, 60, 20, "Menu")
SetGadgetState(#chk_Menu, #True)
ButtonGadget(#btn_Resize, 5, 130, 60, 20, "Resize!")
CreateMenu(0, hwnd)
For i = 0 To 20
MenuTitle("Test " + Str(i))
Next i
SetGadgetText(#str_MenuHeight, Str(MenuHeight()))
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_SizeWindow
GetClientRect_(hwnd, @rc.RECT)
SetGadgetText(#str_ClientHeight, Str(rc\bottom - rc\top))
SetGadgetText(#str_ClientWidth, Str(rc\right - rc\left))
GetWindowRect_(hwnd, @rc)
SetGadgetText(#str_WindowHeight, Str(rc\bottom - rc\top))
SetGadgetText(#str_WindowWidth, Str(rc\right - rc\left))
SetGadgetText(#str_PBHeight, Str(WindowHeight(0)))
SetGadgetText(#str_PBWidth, Str(WindowWidth(0)))
SetGadgetText(#str_PBH_MenHight, Str(WindowHeight(0) - MenuHeight()))
Case #PB_Event_Gadget
Select EventGadget()
Case #chk_Menu
If GetGadgetState(#chk_Menu)
HideMenu(0, #False)
Else
HideMenu(0, #True)
EndIf
Case #btn_Resize
ResizeWindow(0, #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(0) + 1)
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow