Nein, das kein Problem der Mindestbreite.
Der "Freiraum" wird prinzipiell hinten angehängt.
Sonst würde das hier nämlich nicht funktionieren!
Code: Alles auswählen
EnableExplicit
Declare.i TextRealWidth(FontID, Text$)
Declare GetSystemFontParameters()
Define Event.i, Quit.i
Define Fensterbreite.i
Global WindowTitleFont.s
Global WindowTitleFontHeight.i
Global IconFont.s
Global IconFontHeight.i
Global MenuFont.s
Global MenuFontHeight.i
Global MessageFont.s
Global MessageFontHeight.i
Global SmallWindowTitleFont.s
Global SmallWindowTitleFontHeight.i
Global FontIdWindowTitleFont.i
Enumeration 1
#WindowMain
#WindowEinstellungen
EndEnumeration
Enumeration 1
#Deutsch
#Englisch
#Franzoesisch
#Spanisch
#Portugiesisch
#Slowakisch
#Polnisch
#Tschechisch
EndEnumeration
#AnzahlSprachen = #Tschechisch
Global Sprache.b = #Deutsch
Global Dim Text_Einstellungen$(#AnzahlSprachen)
Text_Einstellungen$(#Deutsch) = "Einstellungen"
Text_Einstellungen$(#Englisch) = "Settings"
Text_Einstellungen$(#Franzoesisch) = "Réglages"
Text_Einstellungen$(#Spanisch) = "Preparar"
Text_Einstellungen$(#Portugiesisch) = "Configuraçào"
Text_Einstellungen$(#Slowakisch) = "Nastavenia"
Text_Einstellungen$(#Polnisch) = "Nastawienia"
Text_Einstellungen$(#Tschechisch) = "Nastavení"
GetSystemFontParameters()
Debug "WindowTitleFont_____________: " + WindowTitleFont.s
Debug "WindowTitleFontHeight_______: " + Str(WindowTitleFontHeight.i)
FontIdWindowTitleFont.i = FontID(LoadFont(#PB_ANY, WindowTitleFont.s, WindowTitleFontHeight.i))
OpenWindow(#WindowEinstellungen, 100, 100, 0, 0, "", #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
Fensterbreite.i = WindowWidth(#WindowEinstellungen, #PB_Window_FrameCoordinate) + TextRealWidth(FontIdWindowTitleFont.i, Text_Einstellungen$(Sprache.b)) - TextRealWidth(FontIdWindowTitleFont.i, "8888")
SetWindowTitle(#WindowEinstellungen, Text_Einstellungen$(Sprache.b))
ResizeWindow(#WindowEinstellungen, #PB_Ignore, #PB_Ignore, Fensterbreite.i, #PB_Ignore)
Repeat
Event.i = WaitWindowEvent()
If Event.i = #PB_Event_CloseWindow
Quit.i = 1
EndIf
Until Quit.i = 1
End
PROCEDURE.i TextRealWidth(FontID, Text$)
PROTECTED dc = GetDC_(0)
PROTECTED sz.Size
SelectObject_(dc, FontID)
GetTextExtentPoint32_(dc, Text$, Len(Text$), sz)
ReleaseDC_(0, dc)
PROCEDURERETURN sz\cx
ENDPROCEDURE
Procedure GetSystemFontParameters()
Define spinfo.NONCLIENTMETRICS
spinfo\cbSize = SizeOf(spinfo)
SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS,0,@spinfo,0)
WindowTitleFont.s = PeekS(@spinfo\lfCaptionFont\lfFaceName[0])
WindowTitleFontHeight.i = -PeekL(@spinfo\lfCaptionFont\lfHeight) - 3
SmallWindowTitleFont.s = PeekS(@spinfo\lfSMCaptionFont\lfFaceName[0])
MenuFont.s = PeekS(@spinfo\lfMenuFont\lfFaceName[0])
MenuFontHeight.i = - PeekL(@spinfo\lfMenuFont\lfHeight) - 3
MessageFont.s = PeekS(@spinfo\lfMessageFont\lfFaceName[0])
MessageFontHeight.i = - PeekL(@spinfo\lfMessageFont\lfHeight) - 3
EndProcedure
Gruß
Daffy
PS. Ich glaube ich werde demnächst einen neuen Spruch anhängen:
So etwas in der Art wie "Wer mit viel Aufwand und hunderten von Programmzeilen die primitivsten Aufgaben erledigen will der verwendet eine grafische Oberfläche"
Was waren das noch Zeiten als ich eine komplette Stücklisten/Lagerverwaltung/Kalkulation mit PowerBasic, Bibliotheken und einer SAA-Oberfläche geschrieben habe. Wenig Programmzeilen mit MÄCHTIGEN Funktionen!

