XPS Yazdırma işlemini kolaylaştırmak için birkaç API ile birlikte evlenmeye çalışıyorum. True Type Yazı Tipleri bazen nasıl kullanıldıkları konusunda kısıtlı olduğundan, bir yazı tipi ile ilişkili lisans için işletim sistemini (Windows) sorgulamanız önerilir. Bunu yapmak için buldum yasaklanmış yöntem aşağıdaki gibidir: TTGetEmbeddingType
başarılı ve privstatus {EMBED_PREVIEWPRINT, EMBED_EDITABLE, EMBED_INSTALLABLE, EMBED_NOEMBEDDING}
biri olmalıdır Bu noktadaC++ LogFont XPS'e Katıştır
HDC hDC = CreateDC(L"DISPLAY", NULL, NULL, NULL);
// logfont is a valid instance of LOGFONTW
HGDIOBJ hfont = ::CreateFontIndirect(&logfont);
if (!SelectObject(hDC, hfont))
return;
ULONG privstatus = 0;
LONG ttStatus;
ttStatus = TTGetEmbeddingType(hDC, &privstatus);
ttStatus E_NONE
olmalıdır. Cuma günü bu örnekte çalışıyordum. Bugün çalıştırılabilir TTGetEmbeddingType çalıştırdığımda, E_NONE
yerine 0x0A (E_NOTATRUETYPEFONT)
döndürür. Wat? İşletim sisteminin bir yazı tipinin gömülü olup olmadığını belirleme yeteneği hakkında temel bir şey eksik miyim?
Devam eden başka bir şey var. Bu, uygulamanızla veya çevrenizle ciddi bir şekilde ilgilenilen bir şey olduğunu belirten oldukça temel bir hatadır. Ve yine de hataların doğru olmasına güvenmem. İşlevlerin ailesinin geri dönebileceği hatalardan biri olarak bile listelenmiyor. –