Seite 1 von 6

Standardfont identifizieren

Verfasst: 22.07.2013 21:37
von Daffy0815
Hallo,

wenn man in einem Programm einen Text ausgibt ohne einen bestimmten Font zu definieren so wird (wahrscheinlich) der normale Systemfont mit einer ??? Größe verwendet.

Wie kann man diesen im Programm identifizieren?

(Danach muss ich ja die Größe der Unterfenster berechnen)

Gruß

Daffy

PS. Bis jetzt habe ich nur herausgefunden das es etwas gibt das sich "#DEFAULT_GUI_FONT" nennt.
Wie man damit aber auf Name und Größe des Fonts kommt ist mir ein Rätsel!

Re: Standardfont identifizieren

Verfasst: 22.07.2013 23:57
von Rebon
In dem folgenden Code von Rescator gibt es Prozeduren dafür, ist aber schon sehr alt und mit API-Befehlen.

Code: Alles auswählen

Procedure.s GetDefaultFontName()
  fnt.l=GetStockObject_(#ANSI_VAR_FONT)
  If fnt
   DefType.LOGFONT finfo
   GetObject_(fnt,SizeOf(LOGFONT),@finfo)
   systemfontname.s=PeekS(@finfo\lfFaceName[0])
   ProcedureReturn PeekS(@finfo\lfFaceName[0])
  EndIf
  ProcedureReturn "System"
EndProcedure

Procedure.l GetDefaultFontSize()
  fnt.l=GetStockObject_(#ANSI_VAR_FONT)
  If fnt
   DefType.LOGFONT finfo
   GetObject_(fnt,SizeOf(LOGFONT),@finfo)
   systemfontsize=finfo\lfHeight
   ProcedureReturn finfo\lfHeight
  EndIf
ProcedureReturn 12
EndProcedure
http://forums.purebasic.com/english/vie ... 97e#p95386

Re: Standardfont identifizieren

Verfasst: 23.07.2013 00:14
von Daffy0815
Danke, bekomme ich aber leider nicht zum laufen!

Der Compiler "stolpert" über die Zeilen mit "DefType"

Gruß

Daffy

Re: Standardfont identifizieren

Verfasst: 23.07.2013 00:21
von ts-soft
Wenn man nicht von alleine drauf kommt, das DefType dem Define entspricht, hilft immer noch die Suche in der Hilfe.
Da gibts dann nur einen Treffer in der Geschichte (History), wonach dann immer noch etwas blättern angesagt ist :mrgreen:

Re: Standardfont identifizieren

Verfasst: 23.07.2013 00:30
von Daffy0815
@ts-Soft

So "schlau" war ich auch schon!

Nur dann geh doch mal in die Hilfe dann gib unter "suchen" "deftype" ein und dann ????

Keine Möglichkeit zum suchen des Wortes in hunderten von Zeilen der "Geschichte"!!!

Gruß

Daffy

Re: Standardfont identifizieren

Verfasst: 23.07.2013 00:39
von Daffy0815
Was mich an der Ausgabe der Prozedur einwenig wundert ist das diese "MS SANS SERIF" zurückgibt.
Ich dachte immer der Standardfont wäre "Tahoma".

Und vor allen Dingen: Wo erscheint diese Schriftart bzw. deren Größe in den Einstellungen der Systemsteurung?

Unter Eigenschaften von Anzeige -> Darstellung -> Erweitert kommt diese Schriftart gar nicht vor!


Gruß

Daffy

Re: Standardfont identifizieren

Verfasst: 23.07.2013 00:58
von STARGÅTE
Tahoma mag für Gadgets und Windows die Standard-Font sein, hängt aber davon ab, was du in deiner Theme eingestellt hast, aber danach hast du ja nicht gefragt.

Re: Standardfont identifizieren

Verfasst: 23.07.2013 01:03
von Daffy0815
Eingestellt ist "Windows klassisch", Windows Standard, Schriftgrad Normal

Ist aber doch eigentlich egal wenn nirgens in den Eigenschaften der Anzeige eine Einstellung für den "Standard-Text-Font" und dessen Größe zu finden ist, dann ist das Ganze doch sowieso für die Katz!

Eigentlich ist das Ganze irgendwie "zum kotzen". Für jede zweite Programmzeile suchst man sich stundenlang einen "Wolf".
Es kann doch nicht wahr sein, dass es so ein Aufwand ist herauszufinden mit welcher Schriftart und Schriftgröße eine stinknormale Textausgabe in einem PureBasic-Fenster unter Windows hat.

Desgleichen die Sache mit den Compileroptionen.
Wenn ein Programm der Version 1.0 fünf Konfigurationsparameter hat und in der Version 1.1 sagen wir mal sechs dann sollte das Programm anhand seiner Versionsnummer in der Lage sein die Konfigurationsparameter entsprechend anzupassen.
Hierzu muss es aber auch möglich sein die Versionsnummern IM Programm zu verwalten und nicht nur in irgendeiner Compileroption.
Oder muss man das bei PureBasic doppelt verwalten?




Gruß

Daffy

Re: Standardfont identifizieren

Verfasst: 23.07.2013 01:13
von STARGÅTE
Eine Standard-Schriftart ist eine Schriftart, die benutzt wird, wenn nichts anderes Definiert ist.
Für Gadgets und deine GUI ist aber eine Font definiert, also musst du sie auch so auslesen, jenachdem von was (Button, Menü, Title, Dialog usw.)

Re: Standardfont identifizieren

Verfasst: 23.07.2013 01:17
von Daffy0815
Seehr schön :mrgreen:

Dann sagen wir doch mal "DER GANZ NORMALE TEXT DEN MAN OHNE IRGENDETWAS ANZUGEBEN IN EIN FENSTER SCHREIBT"