PureBasic
https://www.purebasic.fr/french/

4.31 certaine API pose problème
https://www.purebasic.fr/french/viewtopic.php?f=7&t=9507
Page 1 sur 1

Auteur:  Thyphoon [ Jeu 18/Juin/2009 20:09 ]
Sujet du message:  4.31 certaine API pose problème

currieux je viens de passer a la version 4.31 et ces fonctions que j'utilisais en 4.30 ne fonctionne plus

Code:
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

Auteur:  KrisJNT [ Jeu 18/Juin/2009 20:47 ]
Sujet du message: 

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 ! :)

Auteur:  Flype [ Ven 19/Juin/2009 11:00 ]
Sujet du message: 

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.

Auteur:  lepiaf31 [ Lun 10/Aoû/2009 11:48 ]
Sujet du message: 

J'ai eu le meme probleme :( . Pour le resoudre j'ai utilisé AddFontResourceEx:
Code:
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

Auteur:  Thyphoon [ Lun 10/Aoû/2009 17:01 ]
Sujet du message: 

merci beaucoup je vais essayer !! :)

Auteur:  Flype [ Lun 10/Aoû/2009 19:27 ]
Sujet du message: 

Salut Thyphoon,

Sinon tu peux toujours importer les fonctions dont tu as besoin.

Code:
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)

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/