Anzeigeproblem mit der 5.72 LTS X64

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
RAaBe
Beiträge: 79
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Anzeigeproblem mit der 5.72 LTS X64

Beitrag von RAaBe »

Hallo, nach dem Wechsel von 5.71 LTS x64 nach 5.72 LTS x64 hat sich folgender Fehler gezeigt:

Bild

Bei der Version 5.71 so es noch so aus:

Bild

So soll es auch aussehen, natürlich bei gleichem Quellcode!

Kann das jemand bestätigen bzw. Fred melden!

Reinhard
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RAaBe
Beiträge: 79
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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...
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RAaBe
Beiträge: 79
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag von mk-soft »

Siehe ... Etwas funden ...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RAaBe
Beiträge: 79
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: Anzeigeproblem mit der 5.72 LTS X64

Beitrag 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
Antworten