Page 1 sur 1
4.31 certaine API pose problème
Publié : jeu. 18/juin/2009 20:09
par Thyphoon
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
Publié : jeu. 18/juin/2009 20:47
par KrisJNT
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 !
Publié : ven. 19/juin/2009 11:00
par Flype
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.
Publié : lun. 10/août/2009 11:48
par lepiaf31
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
Publié : lun. 10/août/2009 17:01
par Thyphoon
merci beaucoup je vais essayer !!
Publié : lun. 10/août/2009 19:27
par Flype
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)