"ProcedureReturn MenuTitleWidth * 1.03"
MS-DOS hieß ja auch mal QDOS ([Q]uick and [D]irty [O]perating [S]ystem)
Gruß
Daffy
Das kann aber nicht sein, weil die Zwischenabstände (Item-Anfang bis Item-Ende = Vollständige Breite des MenuItems) des MenuTitle in der RECT-Struktur mit einberechnet wurden.Daffy0815 hat geschrieben:Ist sehe das eher so wie NickTheQuick.
Da werden bestimmt noch Abstände zwischen den Menübuttons eingebaut.
Code: Alles auswählen
EnableExplicit
Procedure GetMenuTitleWidth(WindowID, MenuID, MenuTitleID)
Protected WINRECT.RECT
Protected MENURECT.RECT
Protected MenuTitleX
Protected MenuTitleWidth
GetWindowRect_(WindowID, WINRECT)
GetMenuItemRect_(WindowID, MenuID, MenuTitleID, MENURECT)
MenuTitleX = MENURECT\left - WINRECT\left
MenuTitleWidth = MENURECT\Right-MENURECT\Left
ProcedureReturn MenuTitleWidth
EndProcedure
Procedure GetFullMenuTitleWidth(WindowID, MenuID)
Protected a
Protected MenuTitleTotal
Protected MenuTitleWidthTotal
MenuTitleTotal = GetMenuItemCount_(MenuID)-1
For a=0 To MenuTitleTotal
MenuTitleWidthTotal + GetMenuTitleWidth(WindowID, MenuID, a)
Next
ProcedureReturn MenuTitleWidthTotal * 1.05834
EndProcedure
If OpenWindow(0, 0, 0, 400, 70, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateMenu(0,WindowID(0))
MenuTitle("Datei");0
MenuTitle("Bearbeiten");1
MenuTitle("Hilfe");2
EndIf
ResizeWindow(0,#PB_Ignore,#PB_Ignore, GetFullMenuTitleWidth(WindowID(0), MenuID(0)), #PB_Ignore) ;Hieran kann man sehen das in der Breitenberechnung noch was fehlt
Debug "Breite von MenuTitle ''Datei'': " + GetMenuTitleWidth(WindowID(0), MenuID(0), 0)
Debug "Breite von MenuTitle ''Bearbeiten'': " + GetMenuTitleWidth(WindowID(0), MenuID(0), 1)
Debug "Breite von MenuTitle ''Hilfe'': " + GetMenuTitleWidth(WindowID(0), MenuID(0), 2)
Debug "Breite aller MenuTitles: " + GetFullMenuTitleWidth(WindowID(0), MenuID(0))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf