Deutsch
Stammtisch & Café

ChooseFont.

 


Beschreibung:

ChooseFont erzeugt einen Dialog zur Auswahl eines Fonts.




Deklaration:

Def @ChooseFont(1) ! COMDLG32.DLL,ChooseFontA




Parameter:

1.Parameter: CHOOSEFONT Struktur oder 60 Byte große Bereichsvariable. =>
-Byte 0-3 = Größe der Bereichsvariablen in Bytes
-Byte 4-7 = Handle des Fensters, auf dem der Dialog erzeugt werden soll.
-Byte 8-11 = 0, oder wenn bei Byte 20 CF_PRINTERFONTS angegeben wurde, der Device-Context des Druckers, um dessen verfügbare Fonts zu listen.
-Byte 12-15 = Zeiger auf eine LOGFONT Struktur (60 Byte großer Bereich), die Angaben über den gewählten Font aufnimmt. Wenn bei Byte 20 CF_INITTOLOGFONTSTRUCT angegeben wurde, kann diese Struktur auch dazu verwendet werden, den Dialog zu initialisieren (siehe auch Rückgabewert).
-Byte 16-19 = Wenn der Dialog geschlossen wurde, steht hier die Größe des gewählten Fonts in 1/10 eines Punktes.
-Bytes 20-23 = Flags, die das Aussehen und die Initialisierung des Dialogs beeinflussen. Flags können mit | addiert werden.
$200 = (CF_APPLY) Der Dialog enthält einen ‘Übernehmen’ Button.
$400 = (CF_ANSIONLY) Der Dialog enthält keine Symbolfonts (nicht für indows95).
$3 = (CF_BOTH) Der Dialog enthält Drucker und Bildschirmfonts.
$40000 = (CF_TTONLY) Der Dialog enthält nur Truetype Fonts.
$100 = (CF_EFFECTS) ‚Unterstreichen’, ‚Durchstreichen’ und eine Fontfarbe können gewählt werden.
$8 = (CF_ENABLEHOOK) Aktiviert die Hookfunktion von Byte 32.
$10 = (CF_ENABLETEMPLATE) Aktiviert die Vorlage in Byte 36.
$20 = (CF_ENABLETEMPLATEHANDLE) Aktiviert die Vorlage in Byte 40.
$4000 = (CF_FIXEDPITCHONLY) Nur Fonts mit gleicher Zeichengröße der Buchstaben und Zeichen untereinander werden im Dialog angezeigt.
$10000 = (CF_FORCEFONTEXIST) Fehlermeldung bei nicht existierendem Font.
$40 = (CF_INITTOLOGFONTSTRUCT) Die LOGFONT Struktur von Byte 12 wird benutzt um die Controls des Dialogs zu initialisieren.
$2000 = (CF_LIMITSIZE) Es werden nur Fontgrößen gelistet, die unterhalb des Wertes von Byte 56 und oberhalb des Wertes von Byte 52 liegen.
$80000 = (CF_NOFACESEL) Es ist keine Schriftart wählbar.
$800000 = (CF_NOSCRIPTSEL) ‚Scvript’ kann nicht ausgewählt werden.
$100000 = (CF_NOSTYLESEL) ‚Schriftschnitt’ kann nicht ausgewählt werden.
$200000 = (CF_NOSIZESEL) Schriftgröße kann nicht ausgewählt werden.
$1000 = (CF_NOSIMULATIONS) Die ‚Voranzeige’ wird ausgeschaltet.
$800 = (CF_NOVECTORFONTS)
$1000000 = (CF_NOVERTFONTS) Nur horizontal ausgerichtete Fonts werden gelistet.
$2 = (CF_PRINTERFONTS) Es werden nur Druckerfonts gelistet.
$20000 = (CF_SCALABLEONLY) Es werden nur skalierbare Fonts gelistet.
$1 = (CF_SCREENFONTS) Es werden nur Bildschirmfonts gelistet.
$400 = (CF_SCRIPTSONLY)
$400000 = ( CF_SELECTSCRIPT)
$4 = (CF_SHOWHELP) Ein Hilfebutton wird angezeigt.
$80 = (CF_USESTYLE) Auf Byte 44 befindet sich die Adresse eines Buffers mit dem String des ‚Schriftschnitts’ der gewählt wurde. Als Input steht hier der voreingestellte String des Schriftschnitts. Dieser Flag läßte alle Inputparameter der LOGFONT Struktur ungültig werden, die den Schriftschnitt spezifizieren.
$8000 = (CF_WYSIWYG) Nur Fonts die auf dem Drucker und dem Bildschirm verfügbar sind werden gelistet.
-Byte 24-27 = Farbwert der voreingestellten Farbe für den Font. Kehrt die Funktion zurück, steht hier der gewählte Farbwert.
-Byte 28-31 = Platz für Daten, die die Anwendung an die Hookfunktion sendet (kann 0 sein).
-Byte 32-35 = Adresse einer Hookfunktion, die Messages des Dialoges abfängt (kann 0 sein – siehe Flags an Byte 20).
-Byte 36-39 = Adresse eines Strings, der eine Vorlage für den Dialog angibt (kann 0 sein – siehe Flags an Byte 20).
-Byte 40-43 = Handle auf eine Vorlage für den Dialog (kann 0 sein – siehe Flags an Byte 20).
-Byte 44-47 = Adresse einer Bereichsvariablen, die einen String zur Initialisierung des ‚Schriftschnittcontrols’ enthält (kann 0 sein – siehe Flags an Byte 20).
-Byte 48-49 = Gibt die Art des ausgewählten Fonts an.=>
$100 = (BOLD_FONTTYPE) fett
$200 = (ITALIC_FONTTYPE) kursiv
$4000 = (PRINTER_FONTTYPE) Druckerschriftart
$400 = (REGULAR_FONTTYPE) standard
$2000 = (SCREEN_FONTTYPE) Bildschirmschriftart
$8000 = (SIMULATED_FONTTYPE) simuliert
-Byte 50-51 = 0
-Byte 52-55 = Minimal zulässige Fontgröße (kann 0 sein – siehe Flags an Byte 20).
-Byte 56-59 = Maximal zulässige Fontgröße (kann 0 sein – siehe Flags an Byte 20).



Rückgabewert:

1 bei Erfolg, 0 bei Misserfolg. Die Angaben zu dem gewählten Font werden unter anderem in der 60 Byte großen LOGFONT Struktur abgelegt. Als Input kann diese Struktur auch zur Initialisierung des Dialoges genutzt werden. =>
-Byte 0-3 = Höhe des Font. Steht hier 0, wird ein Defaultwert genommen. Berücksichtigt wird der Absolutwert ohne Vorzeichen.
-Byte 4-7 = Breite des Font. Steht hier 0, wird ein Defaultwert genommen. Berücksichtigt wird der Absolutwert ohne Vorzeichen.
-Byte 8-11 = Gibt den Winkel zwischen dem Neigungsvektor und der X-Ahse des Geräts in zehntel Grad an.
-Byte 12-15 = Gibt den Winkel zwischen der Grundachse eines Zeichens und der X-Achse des Gerätes in zehntel Grad an.
-Byte 16-19 = Wert zwischen 0 und 1000, der die Schriftdicke des Fonts beschreibt.
0 = (FW_DONTCARE) unbestimmt
100 = (FW_THIN) dünn
200 = (FW_EXTRALIGHT/ FW_ULTRALIGHT)
300 = (FW_LIGHT)
400 = (FW_NORMAL/ FW_REGULAR) normal
500 = (FW_MEDIUM)
600 = (FW_SEMIBOLD/ FW_DEMIBOLD)
700 = (FW_BOLD) fett
800 = (FW_EXTRABOLD/ FW_ULTRABOLD)
900 = (FW_HEAVY/ FW_BLACK)
-Byte 20 = 1 für kursiv
-Byte 21 = 1 für unterstrichen
-Byte 22 = 1 für durchgestrichen
-Byte 23 = Flag für den Buchstabensatz.=>
$0 = (ANSI_CHARSET)
$1 = (DEFAULT_CHARSET)
$2 = (SYMBOL_CHARSET)
$80 = (SHIFTJIS_CHARSET)
$86 = (GB2312_CHARSET)
$81 = (HANGEUL_CHARSET)
$88 = (CHINESEBIG5_CHARSET)
$FF = (OEM_CHARSET)
$82 = (JOHAB_CHARSET)
$B1 = (HEBREW_CHARSET)
$B2 = (ARABIC_CHARSET)
$A1 = (GREEK_CHARSET)
$A2 = (TURKISH_CHARSET)
$DE = (THAI_CHARSET)
$EE = (EASTEUROPE_CHARSET)
$CC = (RUSSIAN_CHARSET)
$4D = (MAC_CHARSET)
$BA = (BALTIC_CHARSET)
-Byte 24 = Die gewünschte Ausgabegenauigkeit.=>
$0 = OUT_DEFAULT_PRECIS) Defaultverhalten des Font-Mappers.
$5 = (OUT_DEVICE_PRECIS) Der Font-Mapper nimmt einen Geräte-Font, wenn mehre Fonts mit gleichem Namen vorhanden sind.
$8 = (OUT_OUTLINE_PRECIS) Der Font-Mapper wählt Truetype Font oder einen anderen Outline-Font.
$6 = (OUT_RASTER_PRECIS) Der Font-Mapper nimmt einen Raster-Font, wenn mehre Fonts mit gleichem Namen vorhanden sind.
$7 =(OUT_TT_ONLY_PRECIS) Der Font-Maper wählt einen Truetype Font.
$4 = (OUT_TT_PRECIS) Der Font-Maper wählt einen Truetype Font wenn mehrer Fonts mit gleichem Namen vorhanden sind.
-Byte 25 = Ein Flag für die Anpassungsgenauigkeit. Dieser Wert definiert, wie Zeichen zugeschnitten werden, die außerhalb des Clipping-Bereichs liegen.
$0 = (CLIP_DEFAULT_PRECIS)
$80 = (CLIP_EMBEDDED)
$10 = (CLIP_LH_ANGLES)
-Byte 26 = Ein Flag, für die gewünschte Ausgabequalität.
$0 = (DEFAULT_QUALITY) Das Erscheinungsbild der Schrift spielt keine Rolle.
$1 = (DRAFT_QUALITY) Das Erscheinungsbild der Schrift ist weniger wichtig als bei PROOF_QUALITY.
$2 = (PROOF_QUALITY) Die Zeichenqualität der Schrift ist wichtiger als die exakte Übereinstimmung der Attribute.
-Byte 27 = Ein Flag für den ‚Durchschuss’ der Schriftart =>
$0 = (DEFAULT_PITCH)
$1 = (FIXED_PITCH)
$2 = (VARIABLE_PITCH)
evtl. In Addition (|) mit einem der folgenden Flags für die ‘Fontfamilie’:=>
$0 = (FF_DONTCARE)
$50 = (FF_DECORATIVE)
$0 = (FF_MODERN)
$10 = (FF_ROMAN)
$40 = (FF_SCRIPT)
$20 = (FF_SWISS)
Byte 28-59 = String mit dem Namen des gewählten Fonts, oder bei der Initialisierung der Name der Voreingestellten Fonts.


Beispiele:

KompilierenMarkierenSeparieren
Def @ChooseFont(1) ! "COMDLG32.DLL","ChooseFontA"
Declare Choosefont#,LOGFONT#,BUF#,BUF&,FETT%,Kursiv%,Unterstrichen%
Declare Font&
SetTruecolor 1
Windowstyle 31
Windowtitle "Fontauswahldialog"
Window 0,0-640,440
DIM LOGFONT#,60
DIM Choosefont#,60
DIM BUF#,32
Clear BUF#
String buf#,0="Standard"
Clear Choosefont#
Long Choosefont#,0=60
Long Choosefont#,4=%hwnd
Long Choosefont#,12=LOGFONT#
Long Choosefont#,20=$800 | $20000 | $400 | $80 | $100 | $40000 | $1 | $40 + $800000
Long Choosefont#,44=BUF#
LET BUF&=BUF#
Clear Logfont#
Long LOGFONT#,0=20
Long Logfont#,4=0
Long Logfont#,12=200
Long Logfont#,16=400
Byte Logfont#,20=1
Byte Logfont#,26=1
String Logfont#,28="Times New Roman"
@ChooseFont(Choosefont#)

IF @INSTR("KURSIV",@UPPER$(@String$(Buf#,0)))>0

    LET KURSIV%=1

endif

IF @INSTR("FETT",@UPPER$(@String$(Buf#,0)))>0

    LET FETT%=1

ENDIF

IF @Byte(LogFont#,21)=1

    LET Unterstrichen%=1

endif

IF @Byte(LogFont#,22)=1

    @Messagebox("Durchstreichen will ich heute nicht!","Hinweis",64)

endif

ADDSTRING "Font="+@STRING$(LOGFONT#,28)
ADDSTRING "Höhe="+@STR$(@LONG(Logfont#,0))
ADDSTRING "Breite="+@STR$(@LONG(Logfont#,4))
ADDSTRING "Fett="+@STR$(Fett%)
ADDSTRING "Kursiv="+@STR$(Kursiv%)
ADDSTRING "Unterstrichen="+@STR$(Unterstrichen%)
ADDSTRING "Farbe="+@STR$(@Long(Choosefont#,24))
USEFONT @STRING$(LOGFONT#,28),@ABS(@LONG(Logfont#,0)),@ABS(@Long(Logfont#,4)),Fett%,Kursiv%,Unterstrichen%
Textcolor @Long(Choosefont#,24),@RGB(255,255,255)
Drawtext 0,0,"Hallo"
@LIstbox$("Das wurde gewählt:",1)
DISPOSE LOGFONT#
DISPOSE CHOOSEFONT#
Dispose buf#

While 0=0

    Waitinput

Wend


[keywords:008d4ad7f3]
Font auswählen Auswahl Schriftart Schriftfarbe kursiv fett unterstrichen
[/keywords:008d4ad7f3]
 
22.04.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.618 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller13.05.2015
Julian Schmidt31.03.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie