Partager via


Fonction RemoveFontResourceW (wingdi.h)

La fonction RemoveFontResource supprime les polices du 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 retournée

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 recommandons que si une application ajoute ou supprime des polices de la table de polices système, elle avertisse 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 hwnd défini sur HWND_BROADCAST.

S’il existe des références en suspens à une police, la ressource associée reste chargée jusqu’à ce qu’aucun contexte d’appareil ne l’utilise. En outre, 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 à un autre emplacement 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 suspens, 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 nécessite le remplacement du fichier de police, pour réduire le nombre de ressources de la police d’origine à zéro, appelez RemoveFontResource dans une boucle, comme indiqué dans cet exemple de code. Si vous continuez à obtenir des erreurs, cela indique 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.

Note Les applications où le fichier de police d’origine est en cours d’utilisation pourront toujours accéder au fichier d’origine et n’utiliseront pas la nouvelle police tant que la police n’est pas rechargé. Appelez AddFontResource pour recharger la police. Nous vous recommandons d’appeler AddFontResource le même nombre de fois que l’appel à RemoveFontResource a réussi, comme indiqué dans cet exemple de code.
 

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

// TODO: Replace font file

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

Notes

L’en-tête wingdi.h définit RemoveFontResource comme un 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h (inclure Windows.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

AddFontResource

Fonctions police et texte

Vue d’ensemble des polices et du texte

RemoveFontResourceEx

SendMessage