Seite 1 von 1
Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 31.03.2020 16:06
von RAaBe
Hallo, nach dem Wechsel von 5.71 LTS x64 nach 5.72 LTS x64 hat sich folgender Fehler gezeigt:
Bei der Version 5.71 so es noch so aus:
So soll es auch aussehen, natürlich bei gleichem Quellcode!
Kann das jemand bestätigen bzw. Fred melden!
Reinhard
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 31.03.2020 16:26
von mk-soft
So weit ich weiss wurde auf den neuen Standard Zeichensatz von Windows umgestellt
Mit SetGadgetFont(#PB_Default, FontID) an Anfang kannst/must du den passenden Font laden.
Mal im englischen Forum suchen
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 01.04.2020 20:41
von RAaBe
Hallo, leider bringt das nicht den gewünschten Erfolg.
Leider ist mein Englisch zu schlecht für das Englische Forum.
Bleibe ich halt erstmal bei der älteren Version.
Reinhard
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 01.04.2020 23:06
von mk-soft
Etwas gefunden...
Code: Alles auswählen
;-TOP
; http://www.purebasic.fr/german/viewtopic.php?t=13491&start=5
Procedure.s GetFontNameFromGadget(gadget)
Protected *otm.OUTLINETEXTMETRIC
Protected bsize.l,Font.l,hWnd.l
Protected FontName.s
hWnd = GadgetID(gadget)
Font = GetGadgetFont(gadget)
hdc = GetDC_(hWnd)
Font = SelectObject_(hdc,Font)
bsize = GetOutlineTextMetrics_(hdc,0,0)
If bsize = 0
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn
EndIf
*otm = AllocateMemory(bsize)
*otm\otmSize = bsize
GetOutlineTextMetrics_(hdc,bsize,*otm)
FontName = PeekS(*otm+*otm\otmpFamilyName)
FreeMemory(*otm)
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn FontName
EndProcedure
Procedure.s GetFontStyleFromGadget(gadget)
Protected *otm.OUTLINETEXTMETRIC
Protected bsize.l,Font.l,hWnd.l
Protected FontStyle.s
hWnd = GadgetID(gadget)
Font = GetGadgetFont(gadget)
hdc = GetDC_(hWnd)
Font = SelectObject_(hdc,Font)
bsize = GetOutlineTextMetrics_(hdc,0,0)
If bsize = 0
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn
EndIf
*otm = AllocateMemory(bsize)
*otm\otmSize = bsize
GetOutlineTextMetrics_(hdc,bsize,*otm)
FontStyle = PeekS(*otm+*otm\otmpStyleName)
FreeMemory(*otm)
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn FontStyle
EndProcedure
Procedure.l GetFontSizeFromGadget(gadget)
Protected *otm.OUTLINETEXTMETRIC
Protected bsize.l,Font.l,hWnd.l
Protected FontSize.l , val.f
hWnd = GadgetID(gadget)
Font = GetGadgetFont(gadget)
hdc = GetDC_(hWnd)
Font = SelectObject_(hdc,Font)
bsize = GetOutlineTextMetrics_(hdc,0,0)
If bsize = 0
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn
EndIf
*otm = AllocateMemory(bsize)
*otm\otmSize = bsize
GetOutlineTextMetrics_(hdc,bsize,*otm)
val.f = (*otm\otmTextMetrics\tmHeight-*otm\otmTextMetrics\tmInternalLeading)
FontSize = Int(Round((val * 72 / GetDeviceCaps_(hdc,#LOGPIXELSY)),1))
FreeMemory(*otm)
SelectObject_(hdc,Font)
ReleaseDC_(hWnd,hdc)
ProcedureReturn FontSize
EndProcedure
;-TOP
Enumeration Windows
#Main
EndEnumeration
Enumeration Gadgets
EndEnumeration
Enumeration Status
#MainStatusBar
EndEnumeration
Global FontPB_V570 = LoadFont(#PB_Any, "Microsoft Sans Serif", 9)
SetGadgetFont(#PB_Default, FontID(FontPB_V570))
Procedure Main()
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "Window" , #PB_Window_SystemMenu)
ButtonGadget(0, 10, 10, 120, 25, "Default")
Info$ + "Font name: " + GetFontNameFromGadget(i) + #CR$
Info$ + "Font style: " + GetFontStyleFromGadget(i) + #CR$
Info$ + "Font size: " + Str(GetFontSizeFromGadget(i)) + #CR$ + #CR$
Debug Info$
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndProcedure : Main()
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 02.04.2020 12:19
von Bisonte
FontSize = Int(Round((val * 72 / GetDeviceCaps_(hdc,#LOGPIXELSY)),1))
Kann es sein, das das nicht mehr "up-to-date" ist... ?
Ich schätze mal, dass man hier die eingestellten DPI als Berechnungsparameter braucht... ?!
Nur eine Frage...
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 02.04.2020 19:34
von RAaBe
mk-soft hat geschrieben:So weit ich weiss wurde auf den neuen Standard Zeichensatz von Windows umgestellt
Mit SetGadgetFont(#PB_Default, FontID) an Anfang kannst/must du den passenden Font laden.
Mal im englischen Forum suchen
Hi, kann man den irgendwie herausbekommen, welche Schriftart dort gewechselt wurde?
Reinhard
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 02.04.2020 23:25
von mk-soft
Siehe ... Etwas funden ...
Re: Anzeigeproblem mit der 5.72 LTS X64
Verfasst: 25.04.2020 22:23
von RAaBe
mk-soft hat geschrieben:Siehe ... Etwas funden ...
Hallo, sorry für die späte Antwort.
Dein Hinweis hat mir geholfen.
Danke nochmal.
Reinhard