# Enumerating the Installed Fonts into a QUEUE

**URL:** <https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262>\
**Category:** questions\
**Tags:** queue, winapi\
**Created:** [May 23, 2023, 7:40pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262 "2023-05-23T19:40:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![RAD](https://clarionhub.com/user_avatar/clarionhub.com/rad/32/2720_2.png) [@RAD](https://clarionhub.com/u/RAD)\
**Post date:** [May 23, 2023, 7:40pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262/1 "2023-05-23T19:40:11Z")

</div>

Hello.

Anyone did it already and willing to share the code? I know, this is a lazy question.

Regards

---

<div class="post-metadata">

**Author:** ![jslarve](https://clarionhub.com/letter_avatar_proxy/v4/letter/j/e480ec/32.png) [@jslarve](https://clarionhub.com/u/jslarve)\
**Post date:** [May 23, 2023, 8:00pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262/2 "2023-05-23T20:00:37Z")

</div>

[Download Clarion Templates and Tools from Icetips Alta LLC](https://www.icetips.com/downloads.php?dl=PAR2#:~:text=Get%20a%20list-,of,-fonts%20)(with%20original

here’s the file itself. [https://www.icetips.com/par2downloads/Charsets.zip](https://www.icetips.com/par2downloads/Charsets.zip)

---

<div class="post-metadata">

**Author:** ![RAD](https://clarionhub.com/user_avatar/clarionhub.com/rad/32/2720_2.png) [@RAD](https://clarionhub.com/u/RAD)\
**Post date:** [May 23, 2023, 8:27pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262/3 "2023-05-23T20:27:22Z")

</div>

Nice, thank you. But it uses outdated API calls.

I will get rid of my laziness… 🙂

Thank you!

---

<div class="post-metadata">

**Author:** ![Mike\_Duglas](https://clarionhub.com/user_avatar/clarionhub.com/mike_duglas/32/1061_2.png) [@Mike\_Duglas](https://clarionhub.com/u/Mike_Duglas)\
**Post date:** [May 23, 2023, 8:37pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262/4 "2023-05-23T20:37:31Z")

</div>

In [winapi](https://github.com/mikeduglas/winapi) there is TLogicalFont class, here is an example of reading installed fonts:

```auto
logFont CLASS(TLogicalFont)
EnumFontFamiliesCB PROCEDURE(LONG pLogFont, LONG ptextMetric, ULONG pFontType), LONG, PROTECTED, DERIVED
                                END

qFontNames QUEUE, PRE(qFontNames)
FontFace STRING(32)
                                END

  CODE
  logFont.EnumFontFamiliesEx()

logFont.EnumFontFamiliesCB PROCEDURE(LONG pLogFont, LONG ptextMetric, ULONG pFontType)
lf &tagLOGFONTA, AUTO
  CODE
  lf &= (pLogFont)
  qFontNames:FontFace = lf.lfFaceName
  ADD(qFontNames)
  RETURN 1 !- continue

```

---

<div class="post-metadata">

**Author:** ![RAD](https://clarionhub.com/user_avatar/clarionhub.com/rad/32/2720_2.png) [@RAD](https://clarionhub.com/u/RAD)\
**Post date:** [May 23, 2023, 8:45pm UTC](https://clarionhub.com/t/enumerating-the-installed-fonts-into-a-queue/6262/5 "2023-05-23T20:45:28Z")

</div>

Mike, like always, you are a great teacher.

Actually I was doing this…

```auto

							EnumFontFamiliesEx(UNSIGNED hdc, | !handle to DC
								*LOGFONT lpLogfont, | !font information
								*EnumFontFamExProc lpEnumFontFamExProc, | !callback function
								LONG lParam, | !additional data to pass to callback
								LONG dwFlags=0 | !not used; must be 0
								),SIGNED,PROC,PASCAL,RAW,NAME('EnumFontFamiliesExA')

EnumFontFamExProc PROCEDURE(LONG lpElf, |! pointer to ENUMLOGFONTEX or ENUMLOGFONTEXDV
								LONG lpNtm, |! pointer to TEXTMETRIC or NEWTEXTMETRICEX or ENUMTEXTMETRIC
								LONG FontType, |! font type bitmap
								LONG lParam |! optional user defined data

```

But also I was being a fool.

FONTDIALOG() was a simple solution. And it does everything I need at the moment.

No need for me to reinvent the wheel.

Thank you!
