Gültigkeit von Konstanten bzw. Nummern statt ID's
Verfasst: 28.07.2013 16:25
Hallo,
ich habe hier ein ganz merkwürdiges Phänomen!
Da ich das mit den Nummern bzw. ID's ziemlich verwirrend und teilweise auch etwas inkonsequent finde hame ich versucht den folgen Code von ID's auf Nummern umzustellen.
Erst mal der lauffähige Code mit ID's:
Und nun das Gleiche mit Nummern:
Kann mir jemand verraten warum das nicht funktioniert?
Gruß
Daffy
ich habe hier ein ganz merkwürdiges Phänomen!
Da ich das mit den Nummern bzw. ID's ziemlich verwirrend und teilweise auch etwas inkonsequent finde hame ich versucht den folgen Code von ID's auf Nummern umzustellen.
Erst mal der lauffähige Code mit ID's:
Code: Alles auswählen
EnableExplicit
Declare.i _MenuItemWidth(WindowID.i, MenuID.i, MenuItemNumber.i)
Declare.i _MenuItemsWidth(WindowID.i, MenuID.i)
#WindowNumber = 1
#MenuNumber = 1
If OpenWindow(#WindowNumber, 0, 0, 400, 70, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateMenu(#MenuNumber, WindowID(#WindowNumber))
MenuItem(0, "Datei")
MenuItem(1, "Bearbeiten")
MenuItem(2, "Hilfe")
EndIf
ResizeWindow(#WindowNumber,#PB_Ignore,#PB_Ignore, _MenuItemsWidth(WindowID(#WindowNumber), MenuID(#MenuNumber)), #PB_Ignore)
Debug "Breite von MenuItem ''Datei'': " + _MenuItemWidth(WindowID(#WindowNumber), MenuID(#MenuNumber), 0)
Debug "Breite von MenuItem ''Bearbeiten'': " + _MenuItemWidth(WindowID(#WindowNumber), MenuID(#MenuNumber), 1)
Debug "Breite von MenuItem ''Hilfe'': " + _MenuItemWidth(WindowID(#WindowNumber), MenuID(#MenuNumber), 2)
Debug "Breite aller MenuItems: " + _MenuItemsWidth(WindowID(#WindowNumber), MenuID(#MenuNumber))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Procedure _MenuItemWidth(WindowID.i, MenuID.i, MenuItemNumber.i)
Protected WinRect.rect
Protected MenuRect.rect
Protected MenuItemXPos.i
Protected MenuItemWidth.i
GetWindowRect_(WindowID.i, WinRect.rect)
GetMenuItemRect_(WindowID.i, MenuID.i, MenuItemNumber.i, MenuRect.rect)
MenuItemXPos.i = MenuRect.rect\Left - WinRect.rect\Left
MenuItemWidth.i = MenuRect.rect\Right - MenuRect.rect\Left
ProcedureReturn MenuItemWidth.i
EndProcedure
Procedure _MenuItemsWidth(WindowID.i, MenuID.i)
Protected MenuItemCounter.i
Protected MenuItems.i
Protected MenuItemsWidth.i
MenuItems.i = GetMenuItemCount_(MenuID.i)-1
For MenuItemCounter.i = 0 To MenuItems.i
MenuItemsWidth.i + _MenuItemWidth(WindowID.i, MenuID.i, MenuItemCounter.i)
Next
ProcedureReturn MenuItemsWidth.i * 1.05834
EndProcedure
Code: Alles auswählen
EnableExplicit
Declare.i _MenuItemWidth(WindowNumber.i, MenuNumber.i, MenuItemNumber.i)
Declare.i _MenuItemsWidth(WindowNumber.i, MenuNumber.i)
Declare.i _CreateMenu(MenuNumber.i, WindowNumber.i)
#WindowNumber = 1
#MenuNumber = 1
If OpenWindow(#WindowNumber, 0, 0, 400, 70, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If _CreateMenu(#MenuNumber, #WindowNumber)
MenuItem(0, "Datei")
MenuItem(1, "Bearbeiten")
MenuItem(2, "Hilfe")
EndIf
ResizeWindow(#WindowNumber, #PB_Ignore, #PB_Ignore, _MenuItemsWidth(#WindowNumber, #MenuNumber), #PB_Ignore)
Debug "Breite von MenuItem ''Datei'': " + _MenuItemWidth(#WindowNumber, #MenuNumber, 0)
Debug "Breite von MenuItem ''Bearbeiten'': " + _MenuItemWidth(#WindowNumber, #MenuNumber, 1)
Debug "Breite von MenuItem ''Hilfe'': " + _MenuItemWidth(#WindowNumber, #MenuNumber, 2)
Debug "Breite aller MenuItems: " + _MenuItemsWidth(#WindowNumber, #MenuNumber)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Procedure _MenuItemWidth(WindowNumber.i, MenuNumber.i, MenuItemNumber.i)
Protected WinRect.rect
Protected MenuRect.rect
Protected MenuItemXPos.i
Protected MenuItemWidth.i
GetWindowRect_(WindowID(WindowNumber.i), WinRect.rect)
GetMenuItemRect_(WindowID(WindowNumber.i), MenuID(MenuNumber.i), MenuItemNumber.i, MenuRect.rect)
MenuItemXPos.i = MenuRect.rect\Left - WinRect.rect\Left
MenuItemWidth.i = MenuRect.rect\Right - MenuRect.rect\Left
ProcedureReturn MenuItemWidth.i
EndProcedure
Procedure _MenuItemsWidth(WindowNumber.i, MenuNumber.i)
Protected MenuItemCounter.i
Protected MenuItems.i
Protected MenuItemsWidth.i
MenuItems.i = GetMenuItemCount_(MenuID(MenuNumber.i))-1
For MenuItemCounter.i = 0 To MenuItems.i
MenuItemsWidth.i + _MenuItemWidth(WindowID(WindowNumber.i), MenuID(MenuNumber.i), MenuItemCounter.i)
Next
ProcedureReturn MenuItemsWidth.i * 1.05834
EndProcedure
Procedure _CreateMenu(MenuNumber.i, WindowNumber.i)
ProcedureReturn CreateMenu(MenuNumber.i, WindowID(WindowNumber.i))
EndProcedure
Kann mir jemand verraten warum das nicht funktioniert?
Gruß
Daffy