Win32でフォントを列挙する (QtでWin32 API を使う)
int gFontCount = 0; int CALLBACK EnumFontProc( ENUMLOGFONTEX* lpelf, NEWTEXTMETRIC* lpntm, DWORD fontType, LPARAM lParam ) { gFontCount++; Widget* widget = (Widget*)lParam; widget->setWindowTitle( QString::number(gFontCount) ); std::wstring ws = &lpelf->elfLogFont.lfFaceName[0]; return TRUE; } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); LOGFONT lf; memset( &lf, 0, sizeof(lf) ); lf.lfCharSet = ANSI_CHARSET; EnumFontFamiliesEx( getDC(), &lf, (FONTENUMPROC)EnumFontProc, (LPARAM)this, 0 ); }
さてビルドだ!……と行きたい所ですが、"undefined reference to EnumFontFamiliesExW@20" とコンパイルエラーが出てしまいます。EnumFontFamiliesEx は gdi32.lib なので、*.pro ファイルに、
win32:LIBS += -lgdi32
を追加すればOK。前にもWin32使った事があったのに、忘れてた…。