Seite 1 von 2
Schriftart in Programm Includen - How?
Verfasst: 11.08.2007 17:45
von benji
Hey!
Ich habe mal wieder ne verrückte idee:
ich möchte gerne eine Font die im .fon Format vorliegt in mein Programm einbinden. (so, dass diese auch während der runtime zum rendern der Buttons verwendet werden kann)
Meine bisherigen Versuche waren allesamt erfolglos. Und die Suche hat mich auch nicht weiter gebracht (falsche Suchbegriffe?!)
Hoffe ihr könnt mich mal wieder retten
gruß, benji
Verfasst: 11.08.2007 17:46
von Fluid Byte
Hoffe ihr könnt mich mal wieder retten
Können wir nicht, aber die Boardsuche ist dein Freund!

Verfasst: 11.08.2007 18:42
von Kaeru Gaman
ich hab keine ahnung von .fon
wird die ebenso im system eingebunden wie .ttf?
...dann musst du die vorab ins %system%\FONTS verzeichnis schreiben,
und in der registry eintragen,
damit PB die per LoadFont laden kann.
Verfasst: 12.08.2007 10:34
von Andreas
Du musst nur noch die Namen und Pfade anpassen !
Code: Alles auswählen
Import "User32.lib"
;Windows NT/2000/XP/Vista: Included in Windows 2000 And later.
;Windows 95/98/Me: Unsupported.
AddFontMemResourceEx(pFont,Size,Par,Count)
RemoveFontMemResourceEx(fHandle)
EndImport
Global fHandle.l,Fonts.l
If OpenWindow(0, #PB_Ignore,#PB_Ignore,640,480, "Mein Font", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
If CreateGadgetList(WindowID(0))
fHandle = AddFontMemResourceEx(?MyFont,?EndOfMyFont-?MyFont,0,@Fonts)
LoadFont(1,"Digiface",14)
ButtonGadget(0, 10,10,80,24,"12345")
SetGadgetFont(0,FontID(1))
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case 0:
RemoveFontMemResourceEx(fHandle)
SendMessage_(WindowID(0),#WM_CLOSE,0,0)
EndSelect
EndSelect
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
EndIf
End
DataSection
MyFont:
IncludeBinary "Digiface.ttf"
EndOfMyFont:
EndDataSection
Verfasst: 13.08.2007 10:39
von bobobo
Können normal eingeschränkte User das ausführen?
Verfasst: 13.08.2007 10:59
von Kaeru Gaman
@Andreas
mal im ernst: bitte nicht
unnötig viel API verwenden.
- #CW_USEDEFAULT
SendMessage_(GadgetID(0),#WM_SETFONT,FontID(1),1)
SendMessage_(WindowID(0),#WM_CLOSE,0,0)
was soll der unfug? willst du anfänger beeindrucken?
- #PB_Ignore
SetGadgetFont(
CloseWindow(0)
...wozu der API-Krempel?
Verfasst: 13.08.2007 12:30
von bobobo
immer ruhig
so klappt's auch mit der Demo womöglich
..mein Vorschlag (irgendwo aus dem Forum gemopst)
Code: Alles auswählen
Procedure InstallAdditionalFonts(font$)
AddFontResource_(font$)
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
Procedure DeinstallAdditionalFonts(Font$)
RemoveFontResource_(font$)
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
InstallAdditionalFonts("Face Off!.ttf")
LoadFont(0,"Face Off!",76)
OpenWindow(0,0,0,200,200,"juhu")
CreateGadgetList(WindowID(0))
TextGadget(0,0,0,200,200,"")
SetGadgetFont(0,FontID(0))
i=48
Repeat
event=WaitWindowEvent(5000)
i+1
If i=58
i+65-58
EndIf
If i=91
i+97-91
EndIf
SetGadgetText(0,Chr(i))
SetWindowTitle(0,Str(i))
;Delay(50)
If i>121
i=48
EndIf
Until event=#PB_Event_CloseWindow
DeinstallAdditionalFonts("Face Off!.ttf")
achsoja ..unsupported (vermutlich) von allen ausserhalb windoof-Betriebssystemen (also auch kein 95 bis ME)
Verfasst: 13.08.2007 13:56
von gnozal
bobobo hat geschrieben:iachsoja ..unsupported (vermutlich) von allen ausserhalb windoof-Betriebssystemen (also auch kein 95 bis ME)
Seems to work under Win9x-Me :
MSDN hat geschrieben:Requirements for AddFontResource()
Windows NT/2000/XP/Vista: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP. Also supported by Microsoft Layer for Unicode.
Windows 95/98/Me: AddFontResourceW is supported by the Microsoft Layer for Unicode
Verfasst: 13.08.2007 13:59
von bobobo
na denn
als nichtadmin (Gastaccount) geht es wohl auch .(selbsttest)
Verfasst: 13.08.2007 14:45
von Andreas
Kaeru Gaman hat geschrieben:@Andreas
mal im ernst: bitte nicht
unnötig viel API verwenden.
- #CW_USEDEFAULT
SendMessage_(GadgetID(0),#WM_SETFONT,FontID(1),1)
SendMessage_(WindowID(0),#WM_CLOSE,0,0)
was soll der unfug? willst du anfänger beeindrucken?
- #PB_Ignore
SetGadgetFont(
CloseWindow(0)
...wozu der API-Krempel?
Ist halt mein Stil zu programmieren.
Die Api-Messages habe ich im Gedächtnis, die von PB nicht so sehr.
Ich werd' mir aber Mühe geben, beim nächsten Mal.
CloseWindow(0) statt SendMessage_(WindowID(0),#WM_CLOSE,0,0) an dieser Stelle, bringt eine Fehlermeldung.