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

Für allgemeine Fragen zur Programmierung mit PureBasic.
enn
Beiträge: 6
Registriert: 27.01.2009 12:36

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

Beitrag 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
Zuletzt geändert von enn am 24.10.2014 00:49, insgesamt 2-mal geändert.
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

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

Beitrag von HeX0R »

Setze mal EnableExplicit an den Kopf Deines Codes, das sollte Dir die Augen öffnen.
enn
Beiträge: 6
Registriert: 27.01.2009 12:36

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

Beitrag 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
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

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

Beitrag 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
enn
Beiträge: 6
Registriert: 27.01.2009 12:36

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

Beitrag 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
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

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

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