Функция RemoveFontResourceA (wingdi.h)

Функция RemoveFontResource удаляет шрифты из указанного файла из таблицы системных шрифтов.

Если шрифт был добавлен с помощью функции AddFontResourceEx , необходимо использовать функцию RemoveFontResourceEx .

Синтаксис

BOOL RemoveFontResourceA(
  [in] LPCSTR lpFileName
);

Параметры

[in] lpFileName

Указатель на строку, завершающуюся значением NULL, которая называет файл ресурсов шрифта.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Если приложение добавляет или удаляет шрифты из системной таблицы шрифтов, оно уведомляет другие окна об изменении, отправляя WM_FONTCHANGE сообщение во все окна верхнего уровня в системе. Приложение отправляет это сообщение, вызывая функцию SendMessage с параметром hwnd , равным HWND_BROADCAST.

При наличии невыполненных ссылок на шрифт связанный ресурс остается загруженным до тех пор, пока его не будет использовать контекст устройства. Кроме того, если шрифт указан в реестре шрифтов (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) и установлен в любом расположении, отличном от папки %windir%\fonts\, он может быть загружен в другие активные сеансы (включая сеанс 0).

При попытке заменить существующий файл шрифта, содержащий шрифт, невыполненными ссылками на него, может появиться сообщение об ошибке, указывающее, что исходный шрифт невозможно удалить, так как он используется даже после вызова RemoveFontResource. Если приложение требует замены файла шрифта, чтобы уменьшить количество ресурсов исходного шрифта до нуля, вызовите Метод RemoveFontResource в цикле, как показано в этом примере кода. Если вы продолжаете получать ошибки, это означает, что файл шрифта остается загруженным в других сеансах. Убедитесь, что шрифт не указан в реестре шрифтов, и перезапустите систему, чтобы убедиться, что шрифт выгружается из всех сеансов.

Примечание Приложения, в которых используется исходный файл шрифта, по-прежнему смогут получить доступ к исходному файлу и не будут использовать новый шрифт до перезагрузки шрифта. Вызовите Метод AddFontResource , чтобы перезагрузить шрифт. Рекомендуется вызывать AddFontResource столько же раз, сколько и при успешном выполнении вызова RemoveFontResource , как показано в этом примере кода.
 

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

// TODO: Replace font file

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

Примечание

Заголовок wingdi.h определяет RemoveFontResource в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

AddFontResource

Функции шрифта и текста

Общие сведения о шрифтах и тексте

RemoveFontResourceEx

SendMessage