Standardfont rausfinden und "fett" setzen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Standardfont rausfinden und "fett" setzen

Beitrag 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).
PB 6.21 | Win 11
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Standardfont rausfinden und "fett" setzen

Beitrag von Kiffi »

Delle hat geschrieben:wie kann man den aktuell verwendeten Standardfont von PB rausfinden?
GetGadgetFont()?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag 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)
PB 6.21 | Win 11
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag 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...
PB 6.21 | Win 11
Benutzeravatar
kayfr72
Beiträge: 130
Registriert: 12.09.2004 19:13
Wohnort: Lehrberg

Beitrag 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!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

kayfr72 hat geschrieben:vielleicht hilft das!
Vielleicht solltest du erstmal deinen Code selber testen.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Standardfont rausfinden und "fett" setzen

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

PB duerfte eher #DEFAULT_GUI_FONT verwenden, alles andere weicht
ja von dem eingestellten Font ab.
Benutzeravatar
kayfr72
Beiträge: 130
Registriert: 12.09.2004 19:13
Wohnort: Lehrberg

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