PureBoard
http://forums.purebasic.com/german/

Anzeigeproblem mit der 5.72 LTS X64
http://forums.purebasic.com/german/viewtopic.php?f=20&t=31934
Seite 1 von 1

Autor:  RAaBe [ 31.03.2020 16:06 ]
Betreff des Beitrags:  Anzeigeproblem mit der 5.72 LTS X64

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

Autor:  mk-soft [ 31.03.2020 16:26 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

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

Autor:  RAaBe [ 01.04.2020 20:41 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

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

Autor:  mk-soft [ 01.04.2020 23:06 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

Etwas gefunden...
Code:
;-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()

Autor:  Bisonte [ 02.04.2020 12:19 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

Zitat:
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...

Autor:  RAaBe [ 02.04.2020 19:34 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

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

Autor:  mk-soft [ 02.04.2020 23:25 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

Siehe ... Etwas funden ...

Autor:  RAaBe [ 25.04.2020 22:23 ]
Betreff des Beitrags:  Re: Anzeigeproblem mit der 5.72 LTS X64

mk-soft hat geschrieben:
Siehe ... Etwas funden ...

Hallo, sorry für die späte Antwort.

Dein Hinweis hat mir geholfen.

Danke nochmal.

Reinhard

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/