AddFontResourceW после создания нового объекта Font - PullRequest
0 голосов
/ 26 февраля 2019

У меня возникли проблемы с добавлением пользовательских шрифтов после создания объекта шрифта.Вот некоторый демонстрационный код:

[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, uint wMsg, int wParam, int lParam);

[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]

public void Demo()
{
var font = new Font("Roboto", 8); //Create roboto font. Not installed yet, then use Times New Roman. Ok!
var result = AddFontResource(@"C:\Roboto.ttf"); //Install roboto font until system reboots (Sample filename). result == 1. Ok!
var test = SendMessage(0xffff, 0x001D, 0, 0);
font = new Font("Roboto", 8); //Font should be roboto, but still Times New Roman. 
}

Тогда работает следующая демоверсия:

public void Demo()
{
var result = AddFontResource(@"C:\Roboto.ttf"); //Install roboto font until system reboots (Sample filename). result == 1. Ok!
var test = SendMessage(0xffff, 0x001D, 0, 0);
var font = new Font("Roboto", 8); //Font is roboto. OK!
}

Может кто-нибудь сказать мне, почему AddFontResourceW работает, только если объект шрифта не был создан ранее?Или как мне заставить первый пример работать правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...