Seite 1 von 2

Standardfont rausfinden und "fett" setzen

Verfasst: 26.03.2008 00:59
von Delle
Hallo,

wie kann man den aktuell verwendeten Standardfont von PB rausfinden?

Ich möchte ein Gadget mit fetten Text versehen (und natürlich im Standardfont).

Re: Standardfont rausfinden und "fett" setzen

Verfasst: 26.03.2008 01:21
von Kiffi
Delle hat geschrieben:wie kann man den aktuell verwendeten Standardfont von PB rausfinden?
GetGadgetFont()?

Grüße ... Kiffi

Verfasst: 26.03.2008 01:31
von Delle
Ok das liefert aber "nur" die FondID eines bereits vorhandenen Gadgets zurück.

Ich kann damit ja nicht den Font einfach nochmal fett einladen:

LoadFont(1,GetGadgetFont(#Bla),10, #PB_Font_Bold)

Verfasst: 26.03.2008 01:43
von PMV
Da die Font-Lib selber keine möglichkeit bietet, bereits geladene Fonts zu
ändern, wirste wohl auf WinAPI umsteigen müssen.

Um deine Frage aber so zu beantworten, wie du sie wirklich gestellt hast:

Code: Alles auswählen

GetGadgetFont(#PB_Default)
gibt den aktuellen Font zurück ... damit wirst wohl dann API-Prozeduren
füllen müssen. :wink:

MFG PMV

Verfasst: 26.03.2008 01:50
von Delle
Naja das liefert ja auch nur wieder ne ID zurück... ideal wäre halt der Name des Defaultfonts sowie der Größe.

Aber wie Du schon sagt: Ohne API geht da wohl nix...

Verfasst: 08.07.2008 21:35
von kayfr72
Ich habe mal die GetGadgetSize.pb vom CodeArchiv etwas umgbaut.

Code: Alles auswählen

Procedure.s GetGadgetTextFont(GadgetNr.l) 
  ; 
  ; 
  ; 
  ;   
  ;   FontName$ = GetGadgetTextFont() 
  ; 
  
  hGadget = GadgetID(GadgetNr) 
  If hGadget 
    hFont   = SendMessage_(hGadget,#WM_GETFONT,0,0) 
    hDC     = GetDC_(hGadget) 
    If hFont 
      SelectObject_(hDC,hFont) 
    EndIf 
    
   mem= AllocateMemory(33) 
    If GetTextFace_(hDC,32,@mem)
    Result$= PeekS(@mem)
    EndIf
    
    
    ReleaseDC_(hGadget,hDC) 
  EndIf 
  ProcedureReturn Result$
EndProcedure

win =OpenWindow(0,0,0,800,600,".....",#PB_Window_SystemMenu)

Font =LoadFont(0,"Arial",14)
SetGadgetFont(#PB_Default,Font)

CreateGadgetList(WindowID(0))
String$="ok"

TG = TextGadget(0,100,100,80,40,"ok")


Debug GetGadgetTextSize(0)
Debug GetGadgetTextFont(0)


Repeat
Event = WaitWindowEvent()
Select Event 
Case #PB_Event_CloseWindow
quit =1
EndSelect

Until quit =1
End
vielleicht hilft das!

Verfasst: 08.07.2008 21:38
von edel
kayfr72 hat geschrieben:vielleicht hilft das!
Vielleicht solltest du erstmal deinen Code selber testen.

Re: Standardfont rausfinden und "fett" setzen

Verfasst: 09.07.2008 08:21
von Danilo
Delle hat geschrieben:Ich möchte ein Gadget mit fetten Text versehen (und natürlich im Standardfont).
Auf Windows dürfte PB standardmässig "MS Sans Serif" in der Größe 8
verwenden. GetStockObject_(#ANSI_VAR_FONT) sollte der Standardfont sein,
mit dem PB alle Gadgets initialisiert.

Verfasst: 09.07.2008 12:17
von edel
PB duerfte eher #DEFAULT_GUI_FONT verwenden, alles andere weicht
ja von dem eingestellten Font ab.

Verfasst: 09.07.2008 19:45
von kayfr72
Also hab das Proggi nochmal überarbeitet und genau das Gadget gesetzt mit SetGadgetFont(x,Font) und genaz dieser Wert wurde durch GetGadgetTextSize(x) auch wieder ausglesen.Ich werde aber mal die anderen Werte mal überprüfen Vielleicht ändert dich dann noch etwas an der Rückgabe des PB_Default die da nicht genau ist.
Der SytemFont bei XP und Vista ist Tahoma 8 und bei den VorgängerVersionen wie richtig gesagt der MS Sans Serif.Haupsächlich ging es ja um die Größe des Systemfont ,da ja der Name bei LoadFont leer gelassen werden konnte.