AddFontResourceEx爲每種字體返回1,但字體在GDI +中不可訪問(使用VS2015和Windows 10進行測試,也在Windows 2008 R2服務器上進行測試)。添加了AddFontResourceEx的字體在GDI中不起作用+
如果我用Windows Fonts Explorer手動安裝字體,一切正常。 看來,GDI +無法找到與AddFontResourceEx或AddFontResource添加的字體,任何想法我怎麼能得到這個工作?
我使用CodeJock庫,它使用GDI +字體來渲染XAML圖形,所以我無法控制如何創建字體。
int n = 0;
CPathW pw;
pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Light.ttf"));
n =AddFontResourceEx(pw, FR_PRIVATE, nullptr);
pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Thin.ttf"));
AddFontResourceEx(pw, FR_PRIVATE, nullptr);
pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Regular.ttf"));
AddFontResourceEx(pw, FR_PRIVATE, nullptr);
pw.Combine(theApp.m_strMyAppFolder, _T("Ubuntu-R.ttf"));
AddFontResourceEx(pw, FR_PRIVATE, nullptr);
pw.Combine(theApp.m_strMyAppFolder, _T("Ubuntu-L.ttf"));
AddFontResourceEx(pw, FR_PRIVATE, nullptr);
::SendNotifyMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
你是否試圖在相同的過程中使用字體? _「此功能允許進程使用字體,而不允許其他進程訪問字體。」_ –
是的,它是相同的進程並且沒有DLL –
問題假定AddFontResourceEx()有一個錯誤。它沒有錯誤。不要忽略返回值,錯誤處理不是可選的。並且不要忽略問題出現在使用這個庫的代碼中的可能性。這些可能性在SO問題中總是非常非常高。 –