Introduction
The article presents an implementation of an owner drawn ListBox
with the icon and text.
Before programming, you can use resource editor to create a list box template which properties must be set. Select Variable for owner draw and check Want key to input, then uncheck Sort and Has strings check box. Import your favorite icon to your project if you want to display in list box (the icon only support 32x32 dimension size image), then add ListBoxCH.h and ListBoxCH.cpp, two files to your project and add following line to the top where you want to use CListBoxCH
:
#include "ListBoxCH.h"
Then add following statements to implement owner draw list box:
m_ListBox.SubclassDlgItem(IDC_ICON_LIST,this);
m_ListBox.AddItem("MFC",AfxGetApp()->LoadIcon(IDR_MAINFRAME));
Initial owner draw list box:
m_ListBox.SetCurSel(0);
The CListBoxCH
has some operations. Member functions can set or change owner draw list box surface:
class CListBoxCH: public CListBox
{
...
public:
void SetSelColor(COLORREF clr);
void SetBgColor(COLORREF clr);
void SetCurSel(int curSel);
void SetTextColor(COLORREF clr);
void EnableEdge(BOOL bEnable);
int GetCurSel();
...
}
Conclusion
This owner draw list box is very simple. You can add your code to this class or add other message handler to this class.
Happy programming!