Hi, Leute.
Wie komme ich an die vom Benutzer gesetzten Systemschriften ran? Ich meine ohne Style von XP, man kann im Eigenschaftsfenster von Windows doch alle Schriften und Rand-Größen, usw. einstellen. Ich habs bereits mit GetStockObject_() probiert, aber diese Fonts sind der reinste Müll... und zudem nur feste Fonts. Sie sind deswegen Müll, weil ich sehr oft GetTextExtentPoint32_() und GetTextMetrics_() benutze. Die liefern mit den diesen angeblichen Systemschriften nicht die korrekten Angaben von BReite und Höhe des Textes.
Systemfonts rausfinden
-
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten:
Es gibt einen Code von Falco und Jens vielleicht hilft er dir weiter
ich habe in meiner Anwendung die Prozedur verändert damit die Schriftart in PB der Systemschrift angepasst wird und nicht über die Gadgets schreibt
du solltest zuerst den Code von den beiden ausführen dann hast du deine
Systemschrift und in deinem Programm dann deine DPIs in der Prozedur eintragen dann ist es auf jedem Rechner das richtige Erscheinungsbild, musst du aber testen
denke ich
Originalcode auf PB4 übersetzt:
meine Prozedur:
ich habe in meiner Anwendung die Prozedur verändert damit die Schriftart in PB der Systemschrift angepasst wird und nicht über die Gadgets schreibt
du solltest zuerst den Code von den beiden ausführen dann hast du deine
Systemschrift und in deinem Programm dann deine DPIs in der Prozedur eintragen dann ist es auf jedem Rechner das richtige Erscheinungsbild, musst du aber testen
denke ich

Originalcode auf PB4 übersetzt:
Code: Alles auswählen
; Desktopschriftgrad feststellen
; Create: Falko Lünsmann / Jens Haipeter
; Date : 24.12.2005
Procedure.w Desktop_DPI()
hwnd_0.l =GetDesktopWindow_()
hdc_0.l =GetDC_(hwnd_0)
logPix.w = GetDeviceCaps_(hdc_0,#LOGPIXELSX)
ReleaseDC_(hwnd_0, hdc_0)
; Die Procedure gibt den Schriftgrad auf dem Desktop zurück,
; konnte kein Wert gefunden werden, wird -1 zurückgegeben
; Standard ist 96 ppi, kleine Schriftarten
If logPix<1: logPix=-1: EndIf
ProcedureReturn logPix
EndProcedure
Enumeration
#Main_Font
EndEnumeration
; Abfrage
Global _FtFkt.f
Global _FtNam.s
_FtNam="MS Sans Serif"
_FtFkt=1
If Desktop_DPI()>0
_FtFkt=96/Desktop_DPI()
If Desktop_DPI()>96
_FtNam="Arial"
EndIf
EndIf
; GadgetFontText
If LoadFont(#Main_Font ,_FtNam, 8*_FtFkt): Else: End: EndIf
SetGadgetFont(#PB_Default,FontID(#Main_Font))
; Ausgabe
MessageRequester("Die aktuelle Fontgröße ...","des Systems ist "+Str(Desktop_DPI()),0)
End
Code: Alles auswählen
Procedure.w Desktop_DPI()
hwnd_0.l =GetDesktopWindow_()
hdc_0.l =GetDC_(hwnd_0)
logPix.w = GetDeviceCaps_(hdc_0,#LOGPIXELSX)
ReleaseDC_(hwnd_0, hdc_0)
If logPix<1: logPix=-1: EndIf
If logPix>0 : logPix=96/logPix : EndIf
ProcedureReturn logPix
EndProcedure
Code: Alles auswählen
Global FontID1
FontID1 = LoadFont(1, "Arial", 9*Desktop_DPI(), #PB_Font_Bold)
-
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten: