Моя цель — получить имя файла шрифта, выбранного в HDC, без использования DirectWrite.
Для этого я подумал, что могу использовать TTGetEmbeddedFontInfo(), потому что doc говорит:
Указатель на структуру TTLOADINFO, содержащую URL-адрес, из которого был получен встроенный объект шрифта.
Но сейчас, когда я вызываю TTGetEmbeddedFontInfo(), моя программа выходит из строя. Вероятно, это связано с моей функцией read_proc, которая является READEMBEDPROC, но я не могу понять, почему это происходит.
#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#include
#pragma comment(lib, "t2embed.lib")
unsigned long write_proc(void* tFile, const void* buffer,
const unsigned long count)
{
return (unsigned long)fwrite((char*)buffer, 1, count, (FILE*)tFile);
}
unsigned long read_proc(void* tFile, void* buffer,
const unsigned long count)
{
return (unsigned long)fread((char*)buffer, 1, count, (FILE*)tFile);
}
int main()
{
HDC hdc = CreateCompatibleDC(nullptr);
if (hdc == nullptr)
throw std::runtime_error("Failed to call CreateCompatibleDC");
WCHAR tempPath[MAX_PATH];
WCHAR tempFileName[MAX_PATH];
UINT uRetVal;
if (GetTempPathW(MAX_PATH, tempPath) == 0)
throw std::runtime_error("Failed to call GetTempPathW");
if (GetTempFileNameW(tempPath, L"TMP", 0, tempFileName) == 0)
throw std::runtime_error("Failed to call GetTempFileNameW");
std::wcout
Подробнее здесь: https://stackoverflow.com/questions/789 ... edfontinfo