Seite 1 von 1

Eigenes ttf-Font in _.exe einbinden und temporär zuweisen?

Verfasst: 23.10.2014 19:54
von enn
Hallo,
ich versuche vergeblich ein (funktionierendes) Font mit ins Programm einzubinden. Es soll während der Laufzeit zugewiesen bleiben und wird beim verlassen des Programmes wieder verworfen. Wenn ich aus dem Programm heraus ein temporäres ttf-file schreibe und es mit 'AddFontResource_(....ttf)' einbinde funktioniert alles. Das temporäre file soll aber garnicht erst geschrieben werden müssen, was ja eigentlich mit 'AddFontMemResource_()' funktionieren sollte....

So sieht der Ausschnitt aus meinem Programm aus:

Code: Alles auswählen

;----------------------------------------------------------------
L1 = ?label2 - ?label1               		;get size of included binary
AddFontMemResourceEx_(label1,L1,0,1)

LoadFont(100, "Temp Font", 8)              ; Load Font, Size 1
LoadFont(101, "Temp Font", 10)             ; Load Font, Size 2
LoadFont(102, "Temp Font", 12)             ; Load Font, Size 3

DataSection                      	
label1:
  IncludeBinary "TempFont.ttf"  	        ;Schriftfile
label2:  
EndDataSection

;temporäre Schrift den Gadgets zuweisen
;---------------------------------------
SetGadgetFont(#String_0, FontID(100))
SetGadgetFont(#String_8, FontID(101))
SetGadgetFont(#String_102, FontID(102))
SetGadgetFont(#String_103, FontID(101))
;------------------------------------------------------------------
Keine Fehlermeldung, aber das Font wird nicht übernommen. Irgendwas mache ich falsch, hat jemand damit Erfahrung ?

(Win7, PB5.31)

Viele Grüße...

__________________________________________________
BBCode aktiviert
23.10.2014
RSBasic

Re: Eigenes ttf-Font in _.exe einbinden und temporär zuweise

Verfasst: 23.10.2014 20:04
von HeX0R
Setze mal EnableExplicit an den Kopf Deines Codes, das sollte Dir die Augen öffnen.

Re: Eigenes ttf-Font in _.exe einbinden und temporär zuweise

Verfasst: 24.10.2014 10:16
von enn
Vielen Dank für die bestimmt nett gemeinte Antwort...
Nur leider war die Variablendeklaration hier wenig zielführend. Ich vermute den Fehler in der Parametrierung des API, kann aber bisher keine vergleichbaren Beispiele finden um das zu verifizieren (speziell den ersten und den letzten Parameter betreffend).
Hat eventuell jemend noch eine idee zu diesem Problem?

Viele Grüße

Re: Eigenes ttf-Font in _.exe einbinden und temporär zuweise

Verfasst: 24.10.2014 10:23
von andi256

Code: Alles auswählen

HANDLE AddFontMemResourceEx(
  _In_  PVOID pbFont,
  _In_  DWORD cbFont,
  _In_  PVOID pdv,
  _In_  DWORD *pcFonts
);

Code: Alles auswählen

pbFont [in]
    A pointer to a font resource.
cbFont [in]
    The number of bytes in the font resource that is pointed to by pbFont.
pdv [in]
    Reserved. Must be 0.
pcFonts [in]
    A pointer to a variable that specifies the number of fonts installed.
pbFont = Pointer

Code: Alles auswählen

Enumeration
#String_0
#String_8
#String_102
#String_103
EndEnumeration

L1 = ?label2 - ?label1                     ;get size of included binary
a = 1
AddFontMemResourceEx_(?label1,L1,0,@a)

LoadFont(100, "Temp Font", 8)              ; Load Font, Size 1
LoadFont(101, "Temp Font", 10)             ; Load Font, Size 2
LoadFont(102, "Temp Font", 12)             ; Load Font, Size 3

DataSection                         
label1:
  IncludeBinary "C:\Windows\Fonts\arial.ttf"             ;Schriftfile
label2: 
EndDataSection

#window = 0

OpenWindow(#window,500,500,148,260,"New ")
StringGadget(#String_0,  10, 10,100,30,"TEST")
StringGadget(#String_8,  10, 50,100,30,"TEST")
StringGadget(#String_102,10, 90,100,30,"TEST")
StringGadget(#String_103,10,130,100,30,"TEST")

SetGadgetFont(#String_0, FontID(100))
SetGadgetFont(#String_8, FontID(101))
SetGadgetFont(#String_102, FontID(102))
SetGadgetFont(#String_103, FontID(101))

Repeat
  Select WindowEvent()
    Case 0 
      Delay(1)
    Case #PB_Event_CloseWindow
      quit = #True
  EndSelect 
Until quit = #True
mfg Andi

Re: Eigenes ttf-Font in _.exe einbinden und temporär zuweise

Verfasst: 24.10.2014 10:52
von enn
Perfekt !!!
Danke andi256, mit '?label1' war ich grad am probieren, auf das '@a' wäre ich nicht gekommen.
DAS war der entscheidende Hinweis....

Viele Grüße und ein schönes WE

Re: Eigenes ttf-Font in _.exe einbinden und temporär zuweise

Verfasst: 24.10.2014 21:01
von HeX0R
Ich wollte eigentlich auf das fehlende ? hinaus, und das erkennst Du nunmal, wenn Du EnableExplicit aktivierst.
Den Fehler beim vierten Parameter hatte ich gar nicht gesehen, tut mir Leid.