MenüItemWidth (für API-Bibliothek)
Verfasst: 30.07.2013 23:48
@RSBasic
Habe mir gerade mal deine API-Bibliothek angesehen.
Wie ich gesen habe, haben Routinen zu MenuTitleWith und Co. da Einzug gehalten.
Das Gleiche geht auch mit den MenuItems!
Hier der abgewandelte Code mit Beispiel zur eventuellen Aufnahme.
Gruß
Daffy
PS. Habe noch jede Menge Proceduren zu anderen Problemen.
Habe mir gerade mal deine API-Bibliothek angesehen.
Wie ich gesen habe, haben Routinen zu MenuTitleWith und Co. da Einzug gehalten.
Das Gleiche geht auch mit den MenuItems!
Hier der abgewandelte Code mit Beispiel zur eventuellen Aufnahme.
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
Daffy
PS. Habe noch jede Menge Proceduren zu anderen Problemen.