Größe des System Font bei XP und Win7
Verfasst: 30.01.2013 18:28
Hallo!
Gibt es eine sichere/andere Methode, die Systemfontgröße
sowohl bei XP als auch Win7 festzustellen?
Ich habe im Board eine Prozedure (auch in Abwandlungen)
gefunden, die aber nicht immer eindeutige Ergebnisse liefert.
Die ursprüngliche Prozedur stammt glaube ich von Fluid Byte:
Wenn in den Systemeigenschaften die Anzeige geändert wird,
erhalte ich für den Buchstaben "W" z.B. folgende Werte:
(B=Breite, H= Höhe)
Bei XP werden bei 125% und 150% identische Werte ermittelt.
Gibt es eine andere Möglichkeit die Fontgröße bei beiden BS
und bei allen Anzeigegrößen zu ermitteln, damit z.B. Gadget-
größen an die unterschiedlichen Textgrößen angepaßt werden
können?
Gibt es eine sichere/andere Methode, die Systemfontgröße
sowohl bei XP als auch Win7 festzustellen?
Ich habe im Board eine Prozedure (auch in Abwandlungen)
gefunden, die aber nicht immer eindeutige Ergebnisse liefert.
Die ursprüngliche Prozedur stammt glaube ich von Fluid Byte:
Code: Alles auswählen
Enumeration
#SF_CAPTION
#SF_ICON
#SF_MENU
#SF_MESSAGE
#SF_SMCAPTION
#SF_STATUS
EndEnumeration
Procedure GetSystemFont(nIndex)
Protected phkResult, lpValueName.s, lpcbData, *lplf.LOGFONT, hLibGDI, Result
Select nIndex
Case #SF_CAPTION : lpValueName = "CaptionFont"
Case #SF_ICON : lpValueName = "IconFont"
Case #SF_MENU : lpValueName = "MenuFont"
Case #SF_MESSAGE : lpValueName = "MessageFont"
Case #SF_SMCAPTION : lpValueName = "SmCaptionFont"
Case #SF_STATUS : lpValueName = "StatusFont"
EndSelect
RegOpenKeyEx_(#HKEY_CURRENT_USER,"Control Panel\Desktop\WindowMetrics",0,#KEY_READ,@phkResult)
RegQueryValueEx_(phkResult,lpValueName,0,0,0,@lpcbData)
*lplf = AllocateMemory(lpcbData)
RegQueryValueEx_(phkResult,lpValueName,0,0,*lplf,@lpcbData)
RegCloseKey_(phkResult)
hLibGDI = OpenLibrary(#PB_Any,"Gdi32.dll")
Result = CallFunction(hLibGDI,"CreateFontIndirectW",*lplf)
CloseLibrary(hLibGDI)
FreeMemory(*lplf)
ProcedureReturn Result
EndProcedure
OpenWindow(0,0,0,320,240,"W",#WS_CAPTION | #WS_SYSMENU | 1)
hFntCaption = GetSystemFont(#SF_CAPTION)
Caption$ = GetWindowTitle(0)
StartDrawing(WindowOutput(0))
DrawingFont(hFntCaption)
Box(10,10,200,100,#Red)
DrawText(20,20,Caption$)
Debug TextWidth(Caption$)
Debug TextHeight(Caption$)
StopDrawing()
DeleteObject_(hFntCaption)
While WaitWindowEvent() ! 16 : Wend
erhalte ich für den Buchstaben "W" z.B. folgende Werte:
(B=Breite, H= Höhe)
Code: Alles auswählen
Text- XP Win7
größe B H B H
100% 10 13 11 15
125% 12 16 14 20
150% 12 16 17 25
Gibt es eine andere Möglichkeit die Fontgröße bei beiden BS
und bei allen Anzeigegrößen zu ermitteln, damit z.B. Gadget-
größen an die unterschiedlichen Textgrößen angepaßt werden
können?