|Editor's Note: The ComboBox used in this article is illustrated in Alan's Hot Combo Box Control article.|
I had an application where I wanted to allow the user to change fonts but I was not happy with the default CFontDialog provided by the MFC framework. For one it just looks like any old application and I like my applications to stand out. Secondly, it means that the user has to go to another dialog box and click on each font in turn until they find one that they wish to use.
So I figured; why not develop my own font selection combo box like that in Word and similar applications?
The hot font combo box is derived from the standard combo box so it can be used easily in VC++ dialogs etc. without any subclassing or complex code. Simply create a new class in the ClassWizard called CHotFontCombo, derived from CComboBox. Then overwrite the files for that class (HotFontCombo.cpp and HotFontCombo.h) with the files from this article.
Then to create an instance of the hot font combo box simply add a combo box to your dialog resource, then create a member variable of type CHotFontCombo. The MFC framework does all the subclassing for you.
Then, in the OnInitDialog function of you dialog box call the InitialiseFontList() member of the combo box and you will have a gorgeous font selection combo. Heres how it looks:
Then when dropped down...
...each entry is drawn in its own font
DownloadsDownload source - 3 Kb
Download demo project - 80 Kb