Shown is code for For v1.3. Petzold has had a nice series on fonts in PC MAG from about Nov 92-June 93.
#define INCL_DEV
#define INCL_DOSMEMMGR
#define INCL_GPILCIDS
#define INCL_WINWINDOWMGR
#define INCL_WINLISTBOXES
#include <os2.h>
#include <stdio.h>
VOID EXPENTRY FntQueryList(hwnd)
HWND hwnd; // listbox handle
{
PFONTMETRICS pfm;
HDC hdc;
HPS hps;
LONG alDevInfo[2];
LONG lFonts;
LONG lFontCnt = 0L;
CHAR pch[64];
SEL sel;
USHORT i;
hdc = WinOpenWindowDC(hwnd);
DevQueryCaps(hdc, CAPS_HORIZONTAL_FONT_RES, 2L, alDevInfo);
hps = WinGetPS(hwnd);
lFonts = GpiQueryFonts(hps, QF_PUBLIC, (PSZ)0, &lFontCnt,
(LONG)sizeof(FONTMETRICS), (PFONTMETRICS)0 );
DosAllocSeg((USHORT)lFonts * sizeof(FONTMETRICS), &sel, SEG_NONSHARED);
pfm = (PFONTMETRICS)MAKEP(sel, 0);
GpiQueryFonts(hps, QF_PUBLIC, (PSZ)0, &lFonts,
(LONG)sizeof(FONTMETRICS), pfm );
for (i = 0; i < (USHORT)lFonts; i++) {
if (!(pfm[i].fsDefn & FM_DEFN_OUTLINE)) {
if ((pfm[i].sXDeviceRes == (SHORT)alDevInfo[0]) &&
(pfm[i].sYDeviceRes == (SHORT)alDevInfo[1]) ) {
sprintf(pch, "%2d.%s",
pfm[i].sNominalPointSize / 10,
pfm[i].szFacename );
WinSendMsg(hwnd, LM_INSERTITEM,
MPFROMSHORT(LIT_END), MPFROMP(pch) );
}
}
}
DosFreeSeg(sel);
WinReleasePS(hps);
return;
}