Для установки шрифта в систему используется функция AddFontResource
int AddFontResource ( LPCTSTR lpszFilename // имя файла шрифта );
При неудаче вернет ноль. После установки шрифта программа должна послать извещение с параметрами
WM_FONTCHANGE HWND_BROADCAST
Пробуем ? Win 32 Console Application.
// InstallFont.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "iostream.h" #include "windows.h" void main() { int i=AddFontResource("D:\\VС\\InstallFont\\geomap.TTF"); if (i!=0) { SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // сообщить о шрифте cout << "install" << endl; } }
С этого момента шрифт станет, известен всем приложениям. Например, в блокноте его можно будет выбрать.
Этот шрифт будет известен системе до тех пор пока она не будет перезагружена или шрифт не будет удален из системы используя функцию -
BOOL RemoveFontResource ( LPCTSTR lpFileName // имя шрифта );
При успешном выполнении функция вернет ненулевое значение. Пробуем.
#include "stdafx.h" #include "iostream.h" #include "windows.h" void main() { if (RemoveFontResource("D:\\VС\\InstallFont\\geomap.TTF")!=0) { SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // сообщить о шрифте cout << "removed" << endl; } }
Теперь этого шрифта не будет в списке.