Поделиться через


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

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

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

Синтаксис

BOOL RemoveFontResourceW(
  [in] LPCWSTR 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 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка wingdi.h (включая Windows.h)
библиотеки Gdi32.lib
DLL Gdi32.dll

См. также

AddFontResource

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

шрифтов и текста

RemoveFontResourceEx

SendMessage