開発環境 Microsoft Visual Studio Community 2017
実行環境 Windows 10 Home (64bit)
プロジェクトの種類 Visual C++/空のプロジェクト
プロジェクト名 dw_fontlist

dw_fontlist.cpp
// Unicode文字セット
 
#pragma comment(lib, "dwrite")
 
#include <dwrite.h>
#include <stdio.h>
 
template <class T> inline void SafeRelease(T **ppT)
{
	if (*ppT) {
		(*ppT)->Release();
		*ppT = NULL;
	}
}
 
int wmain()
{
	HRESULT hr;
 
	IDWriteFactory* pDWriteFactory = NULL;
	hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory),
		reinterpret_cast<IUnknown**>(&pDWriteFactory));
 
	IDWriteFontCollection* pFontCollection = NULL;
	hr = pDWriteFactory->GetSystemFontCollection(&pFontCollection);
 
	UINT32 familyCount = pFontCollection->GetFontFamilyCount();
	wprintf(L"%u\n", familyCount);
 
	for (UINT32 i = 0; i < familyCount; i++) {
		IDWriteFontFamily* pFontFamily = NULL;
		hr = pFontCollection->GetFontFamily(i, &pFontFamily);
 
		IDWriteLocalizedStrings* pFamilyNames = NULL;
		hr = pFontFamily->GetFamilyNames(&pFamilyNames);
 
		WCHAR name[32];
		hr = pFamilyNames->GetString(0, name, _countof(name));
 
		wprintf(L"%u %s\n", i, name);
 
		SafeRelease(&pFamilyNames);
		SafeRelease(&pFontFamily);
	}
 
	SafeRelease(&pFontCollection);
	SafeRelease(&pDWriteFactory);
	return 0;
}
 
最終更新:2019年01月26日 21:00