我正試圖將兩個API結合在一起以促進XPS打印。由於True Type字體有時會限制它們的使用方式,因此建議您向操作系統(Windows)查詢與字體關聯的許可證。我發現做這件事的方法禁止看起來是這樣的:C++ LogFont嵌入到XPS
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
如果TTGetEmbeddingType
成功和privstatus應該是{EMBED_PREVIEWPRINT, EMBED_EDITABLE, EMBED_INSTALLABLE, EMBED_NOEMBEDDING}
之一。星期五我有這個例子。今天,當我運行我的可執行文件TTGetEmbeddingType返回0x0A (E_NOTATRUETYPEFONT)
而不是E_NONE
。笏?我是否缺少一些有關操作系統確定字體是否可以嵌入的能力的基礎知識?
你還有別的事情正在進行。這是一個非常基本的錯誤,說明你的應用程序或環境嚴重受損。無論如何,我不相信錯誤是正確的。它甚至沒有被列爲功能家族可以返回的錯誤之一。 –