Re: Standardfont identifizieren
Verfasst: 23.07.2013 21:49
@RSBasic
Weist Du auch warum es da "nicht problematisch" ist?
Kann ich Dir sagen!
Entweder sind die Texte in den Buttons einfach abgeschnitten oder es werden völlig sinnentstellte Begriffe verwendet.
(Ist doch im Deutschen auch nicht anders - Oder ist "OK" etwa ein deutsches Wort?)
Lobenswert ist beispielsweise der Button "Abbrechen" hier auf dieser Seite!
Wie oft habe ich schon den Button "Abbruch" gesehen.
Aber lassen wir mal diese Grundsatzdiskussion.
Ich habe das Beispiel mal so geändert das es funktionieren müsste aber es funktioniert eben NICHT!
Vermutlich stimmt irgendwas mit der Textlängenbestimmung nicht.
Aber was?
Gruß
Daffy
Weist Du auch warum es da "nicht problematisch" ist?
Kann ich Dir sagen!
Entweder sind die Texte in den Buttons einfach abgeschnitten oder es werden völlig sinnentstellte Begriffe verwendet.
(Ist doch im Deutschen auch nicht anders - Oder ist "OK" etwa ein deutsches Wort?)
Lobenswert ist beispielsweise der Button "Abbrechen" hier auf dieser Seite!
Wie oft habe ich schon den Button "Abbruch" gesehen.
Aber lassen wir mal diese Grundsatzdiskussion.
Ich habe das Beispiel mal so geändert das es funktionieren müsste aber es funktioniert eben NICHT!
Vermutlich stimmt irgendwas mit der Textlängenbestimmung nicht.
Aber was?
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)
CloseWindow(#WindowEinstellungen)
Fensterbreite.i = Fensterbreite.i + TextRealWidth(FontIdWindowTitleFont.i, Text_Einstellungen$(Sprache.b))
OpenWindow(#WindowEinstellungen, 100, 100, Fensterbreite.i, 0, Text_Einstellungen$(Sprache.b), #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
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
Daffy