Archive.
Thyphoon
Messages : 2697 Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :
Message
par Thyphoon » jeu. 18/juin/2009 20:09
currieux je viens de passer a la version 4.31 et ces fonctions que j'utilisais en 4.30 ne fonctionne plus
Code : Tout sélectionner
Procedure AddFontRessource(FontFileName.s)
AddFontResource_(FontFileName.s)
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE, #NUL, #NUL)
EndProcedure
Procedure RemoveFontRessource(FontFileName.s)
RemoveFontResource_(FontFileName.s)
EndProcedure
ces fonctions permettent d'installer et de désinstaller une font
KrisJNT
Messages : 110 Inscription : ven. 31/oct./2008 16:51
Message
par KrisJNT » jeu. 18/juin/2009 20:47
J'ai peut-être une solution (un peu bancale, certes, mais efficace) :
tu fais une DLL avec PB 4.30, et tu appelles tes fonctions compilées dans 4.31 !
Flype
Messages : 2431 Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes
Message
par Flype » ven. 19/juin/2009 11:00
Je ne sais pas pourquoi çà plante chez toi parcequ'avec ma version 4.31 (x86) les fonctions que tu cites fonctionnent bien (unicode ou pas d'ailleurs) :
Debug AddFontResource_("ProggyCleanSZBP.ttf")
retourne 1 si la police existe bien sûr.
Testé sur Vista SP1.
lepiaf31
Messages : 510 Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :
Message
par lepiaf31 » lun. 10/août/2009 11:48
J'ai eu le meme probleme
. Pour le resoudre j'ai utilisé AddFontResourceEx:
Code : Tout sélectionner
Procedure LoadFontFromFile(Font, FontFile.s, FontName.s, FontSize, FontStyle=0)
library = OpenLibrary(#PB_Any, "gdi32.dll")
If library
FR_PRIVATE = Val("$10")
Result = CallFunction(library, "AddFontResourceExA", FontFile, FR_PRIVATE, 0)
CloseLibrary(library)
SendMessage_(#HWND_BROADCAST, #WM_FONTCHANGE, 0, 0)
If Result
Result = LoadFont(Font, FontName, FontSize, FontStyle)
If Font <> #PB_Any
ProcedureReturn Font
Else
ProcedureReturn Result
EndIf
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
EndProcedure
Thyphoon
Messages : 2697 Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :
Message
par Thyphoon » lun. 10/août/2009 17:01
merci beaucoup je vais essayer !!
Flype
Messages : 2431 Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes
Message
par Flype » lun. 10/août/2009 19:27
Salut Thyphoon,
Sinon tu peux toujours importer les fonctions dont tu as besoin.
Code : Tout sélectionner
Import "Gdi32.lib"
CompilerIf #PB_Compiler_Unicode
AddFontResource_(FontFileName.p-unicode) As "_AddFontResourceW@4"
RemoveFontResource_(FontFilename.p-unicode) As "_RemoveFontResourceW@4"
CompilerElse
AddFontResource_(FontFileName.p-ascii) As "_AddFontResourceA@4"
RemoveFontResource_(FontFilename.p-ascii) As "_RemoveFontResourceA@4"
CompilerEndIf
EndImport
Procedure AddFontRessource(FontFileName.s)
Protected NbFontsAdded = AddFontResource_(FontFileName)
If NbFontsAdded > 0
SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE, #NUL, #NUL)
EndIf
ProcedureReturn NbFontsAdded
EndProcedure
Procedure RemoveFontRessource(FontFileName.s)
ProcedureReturn RemoveFontResource_(FontFileName)
EndProcedure
#FONTNAME = "ProggyClean.fon"
Debug AddFontRessource(#FONTNAME)
Debug RemoveFontRessource(#FONTNAME)