File "ResFont.inc"
Path: /MyWebradios/inc/ResFont.inc
File size: 2.76 KB
MIME-type:
Charset: utf-8
'-------------------------------------------------------------------------
' This is "ResFont.inc", as taken from:
' https://forum.powerbasic.com/forum/user-to-user-discussions/programming/794788-embeded-fonts-in-exe-anyone-got-it-to-work
'-------------------------------------------------------------------------
' Usage:
' -----
' 1) In your RC file, add your font and compile:
' FNT1 RCDATA "Square-Dot-Matrix.ttf"
'
' 2) In your main Callback, use the following:
' STATIC idResFont AS DOUBLE
' STATIC hFont AS DWORD
'
' CASE %WM_INITDIALOG
' idResFont = AddResFont("FNT1")
' FONT NEW "Square Dot-Matrix", 18, 0 TO hFont
' CONTROL SET FONT CB.HNDL, 101, hFont
'
' CASE %WM_DESTROY
' FONT END hFont
' RemoveResFont(idResFont)
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
FUNCTION AddResFont(sResName AS STRING) AS DOUBLE
LOCAL ts, sFileFromRes AS STRING
LOCAL idf AS DOUBLE
LOCAL ff AS LONG
IF sResName = "" THEN EXIT FUNCTION
ts = REMOVE$(DATE$,"-") + REMOVE$(TIME$,":")
idf = VAL(ts)
sFileFromRes = TempDir() + FORMAT$(idf) + ".ttf"
ff = FREEFILE
OPEN sFileFromRes FOR BINARY AS #ff
PUT$ #ff, RESOURCE$(sResName)
CLOSE #ff
AddFontResourceEx(BYVAL STRPTR(sFileFromRes), %FR_PRIVATE, 0)
FUNCTION = idf
END FUNCTION
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
FUNCTION RemoveResFont(BYVAL idRes AS DOUBLE) AS LONG
LOCAL sFileFromRes AS STRING
IF idRes = 0 THEN EXIT FUNCTION
sFileFromRes = TempDir() + FORMAT$(idRes) + ".ttf"
RemoveFontResourceEx(BYVAL STRPTR(sFileFromRes), %FR_PRIVATE, 0)
KILL sFileFromRes
FUNCTION = 1
END FUNCTION
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
FUNCTION RESOURCE$(BYVAL rid AS STRING)
LOCAL L1, L2 AS LONG
LOCAL D1, D2 AS DWORD
L1 = FindResource (GetModuleHandle(""), (rid), BYVAL %RT_RCDATA)
D2 = SizeofResource(GetModuleHandle(""), L1)
L2 = LoadResource (GetModuleHandle(""), L1)
D1 = LockResource (L2)
FUNCTION = PEEK$(D1,D2)
END FUNCTION
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
FUNCTION TempDir() AS STRING
LOCAL lpBuffer AS ASCIIZ * %MAX_PATH
GetTempPath(%MAX_PATH, lpBuffer)
FUNCTION = RTRIM$(lpBuffer, "\") + "\"
END FUNCTION
'-------------------------------------------------------------------------