Partager via


RemoveFontResourceW, fonction (wingdi.h)

La fonction RemoveFontResource supprime les polices dans le fichier spécifié de la table de polices système.

Si la police a été ajoutée à l’aide de la fonction AddFontResourceEx , vous devez utiliser la fonction RemoveFontResourceEx.

Syntaxe

BOOL RemoveFontResourceW(
  [in] LPCWSTR lpFileName
);

Paramètres

[in] lpFileName

Pointeur vers une chaîne terminée par null qui nomme un fichier de ressources de police.

Valeur de retour

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Remarques

Nous vous recommandons d’ajouter ou de supprimer des polices de la table de polices système qu’elle notifie d’autres fenêtres de la modification en envoyant un message WM_FONTCHANGE à toutes les fenêtres de niveau supérieur du système. L’application envoie ce message en appelant la fonction SendMessage avec le paramètre défini sur HWND_BROADCAST.

S’il existe des références en attente à une police, la ressource associée reste chargée jusqu’à ce qu’aucun contexte d’appareil ne l’utilise. De plus, si la police est répertoriée dans le registre de polices (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) et qu’elle est installée à n’importe quel emplacement autre que le dossier %windir%\fonts\, elle peut être chargée dans d’autres sessions actives (y compris la session 0).

Lorsque vous essayez de remplacer un fichier de police existant qui contient une police avec des références en attente, vous pouvez obtenir une erreur indiquant que la police d’origine ne peut pas être supprimée, car elle est en cours d’utilisation même après avoir appelé RemoveFontResource. Si votre application exige que le fichier de police soit remplacé, pour réduire le nombre de ressources de la police d’origine à zéro, appelez RemoveFontResource dans une boucle, comme illustré dans cet exemple de code. Si vous continuez à obtenir des erreurs, il s’agit d’une indication que le fichier de police reste chargé dans d’autres sessions. Vérifiez que la police n’est pas répertoriée dans le Registre de polices et redémarrez le système pour vous assurer que la police est déchargée de toutes les sessions.

Remarque Applications où le fichier de police d’origine est en cours d’utilisation sera toujours en mesure d’accéder au fichier d’origine et n’utilisera pas la nouvelle police tant que la police n’est pas rechargée. Appelez AddFontResource pour recharger la police. Nous vous recommandons d’appeler AddFontResource le même nombre de fois que l’appel à RemoveFontResource réussi comme illustré dans cet exemple de code.
 

int i = 0;
while( RemoveFontResource( FontFile ) )
{
    i++;
}

// TODO: Replace font file

while( i-- )
{
    AddFontResource( FontFile );
}

Note

L’en-tête wingdi.h définit RemoveFontResource comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wingdi.h (include Windows.h)
bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

AddFontResource

fonctions de police et de texte

Vue d’ensemble des polices et du texte

RemoveFontResourceEx

SendMessage