OVH Cloud OVH Cloud

[WD9] Utilisation de API ou Appel32 avec GDI

5 réponses
Avatar
Mickael R.
Bonjour à Tous,

Je rencontre une petite difficulté en cherchant à installer une police
de caractère.
J'execute la commande suivante :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")

et voici le message d'erreur que j'obtiens :

La fonction 'AddFontResource' n'a pas été trouvée dans la DLL GDI32.DLL
Détail de l'erreur système :
La procédure spécifiée est introuvable.
(127)

Pourtant cette fonction est normalement bien présente dans la dll GDI.
La preuve dans le lien ci dessous :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_9r51.asp

Quelqu'un aurait une idée ?

Merci d'avance

Mickael

5 réponses

Avatar
Romain PETIT
Mickael R. avait énoncé :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")



"AddFontResourceA"

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Romain PETIT a formulé la demande :
Mickael R. avait énoncé :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")



"AddFontResourceA"



ou "AddFontResourceW" si tu souhaites travailler en Unicode.
(mais attention à ce que "Microsoft Layer for Unicode" soit ajouté pour
les W9x/Me)
Tout est expliqué en bas du lien que tu as mentionné.

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Mickael R.
Merci Romain,

Effectivement ça marche mieux mais c'est pas encore ça car apparement il
attend un pointeur vers le fichier police et non l'emplacement du
fichier, et la je ne vois vraiment pas comment faire...

J'ai essayé les commandes suivantes :

nIdFic = fOuvre(chemin, foCréationSiInexistant+foLecture)
n = AppelDLL32("GDI32.DLL","AddFontResourceA",&nIdFic)

mais ça ne marche pas !
Je désespère de pouvoir installer une police par programmation...

La question est de savoir comment récupèrer le pointeur d'un fichier !

Merci pour votre aide

Mickael


Romain PETIT a écrit :
Romain PETIT a formulé la demande :
Mickael R. avait énoncé :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")



"AddFontResourceA"



ou "AddFontResourceW" si tu souhaites travailler en Unicode.
(mais attention à ce que "Microsoft Layer for Unicode" soit ajouté pour
les W9x/Me)
Tout est expliqué en bas du lien que tu as mentionné.

A+



Avatar
Firetox
Bonjour,

nIdFic est une chaine asciiz sur 1000
nIdFic = chemin
n = AppelDLL32("GDI32.DLL","AddFontResourceA",&nIdFic)

c'est un pointeur sur le nom du fichier dixit l'aide API
LPCTSTR lpszFilename // pointer to font-resource filename

Firetox

"Mickael R." a écrit dans le message de news:
43fc4507$0$13504$
Merci Romain,

Effectivement ça marche mieux mais c'est pas encore ça car apparement il
attend un pointeur vers le fichier police et non l'emplacement du fichier,
et la je ne vois vraiment pas comment faire...

J'ai essayé les commandes suivantes :

nIdFic = fOuvre(chemin, foCréationSiInexistant+foLecture)
n = AppelDLL32("GDI32.DLL","AddFontResourceA",&nIdFic)

mais ça ne marche pas !
Je désespère de pouvoir installer une police par programmation...

La question est de savoir comment récupèrer le pointeur d'un fichier !

Merci pour votre aide

Mickael


Romain PETIT a écrit :
Romain PETIT a formulé la demande :
Mickael R. avait énoncé :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")



"AddFontResourceA"



ou "AddFontResourceW" si tu souhaites travailler en Unicode.
(mais attention à ce que "Microsoft Layer for Unicode" soit ajouté pour
les W9x/Me)
Tout est expliqué en bas du lien que tu as mentionné.

A+





Avatar
Mickael R.
Merci Firetox,

mais en fait cela marche très bien sans utiliser de pointeur...

J'avais oublié une chose : il faut lancer la copie du fichier font dans
le dossier %WINDIR%/Fonts et ensuite lancer l'Appel DLL qui permet en
fait d'enregistrer la police sur le système ! je pensais que cet appel
faisait la copie et l'enregistrement mais non. Du coup dans le paramètre
de l'appel DLL on indique uniquement le nom du fichier font et pas son
emplacement complet.

Merci pour votre aide

Mickael

Firetox a écrit :
Bonjour,

nIdFic est une chaine asciiz sur 1000
nIdFic = chemin
n = AppelDLL32("GDI32.DLL","AddFontResourceA",&nIdFic)

c'est un pointeur sur le nom du fichier dixit l'aide API
LPCTSTR lpszFilename // pointer to font-resource filename

Firetox

"Mickael R." a écrit dans le message de news:
43fc4507$0$13504$
Merci Romain,

Effectivement ça marche mieux mais c'est pas encore ça car apparement il
attend un pointeur vers le fichier police et non l'emplacement du fichier,
et la je ne vois vraiment pas comment faire...

J'ai essayé les commandes suivantes :

nIdFic = fOuvre(chemin, foCréationSiInexistant+foLecture)
n = AppelDLL32("GDI32.DLL","AddFontResourceA",&nIdFic)

mais ça ne marche pas !
Je désespère de pouvoir installer une police par programmation...

La question est de savoir comment récupèrer le pointeur d'un fichier !

Merci pour votre aide

Mickael


Romain PETIT a écrit :
Romain PETIT a formulé la demande :
Mickael R. avait énoncé :

API("GDI32.DLL","AddFontResource","chemin_de_ma_font_a_installer")


"AddFontResourceA"


ou "AddFontResourceW" si tu souhaites travailler en Unicode.
(mais attention à ce que "Microsoft Layer for Unicode" soit ajouté pour
les W9x/Me)
Tout est expliqué en bas du lien que tu as mentionné.

A+