1 //////////////////////////////////////////////
\r
3 // Definitions for the CMyCombo class
\r
7 #include "resource.h"
\r
10 CMyCombo::CMyCombo() : m_himlImages(NULL)
\r
12 SetImages(3, IDB_STATUS);
\r
15 CMyCombo::~CMyCombo()
\r
17 ImageList_Destroy(m_himlImages);
\r
20 void CMyCombo::PreCreate(CREATESTRUCT &cs)
\r
22 cs.lpszClass = WC_COMBOBOXEX;
\r
23 cs.style = WS_VISIBLE | WS_CHILD | CBS_DROPDOWN;
\r
25 // Set the hight of the combobox in order to see a dropdown list
\r
29 BOOL CMyCombo::AddItems()
\r
37 } ITEMINFO, *PITEMINFO;
\r
41 { 0, 0, 0, (LPTSTR)_T("Item 1")},
\r
42 { 1, 1, 0, (LPTSTR)_T("Item 2")},
\r
43 { 2, 2, 0, (LPTSTR)_T("Item 3")},
\r
47 for(int i = 0; i < MaxItems; ++i)
\r
49 COMBOBOXEXITEM cbei = {0};
\r
50 cbei.mask = CBEIF_TEXT | CBEIF_INDENT | CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;
\r
52 cbei.pszText = IInf[i].pszText;
\r
53 cbei.cchTextMax = sizeof(IInf[i].pszText);
\r
54 cbei.iImage = IInf[i].iImage;
\r
55 cbei.iSelectedImage = IInf[i].iSelectedImage;
\r
56 cbei.iIndent = IInf[i].iIndent;
\r
58 // Add the items to the ComboBox's dropdown list
\r
59 if(-1 == SendMessage(CBEM_INSERTITEM, 0, (LPARAM)&cbei))
\r
63 // Assign the existing image list to the ComboBoxEx control
\r
64 SendMessage(CBEM_SETIMAGELIST, 0, (LPARAM)m_himlImages);
\r
69 void CMyCombo::SetImages(int nImages, UINT ImageID)
\r
73 ImageList_Destroy(m_himlImages);
\r
74 m_himlImages = NULL;
\r
77 HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(ImageID));
\r
79 ::GetObject(hbm, sizeof(BITMAP), &bm);
\r
80 int iImageWidth = bm.bmWidth / nImages;
\r
81 int iImageHeight = bm.bmHeight;
\r
82 COLORREF crMask = RGB(255,0,255);
\r
83 m_himlImages = ImageList_Create(iImageWidth, iImageHeight, ILC_COLOR32 | ILC_MASK, nImages, 0);
\r
84 ImageList_AddMasked(m_himlImages, hbm, crMask);
\r
85 ::DeleteObject(hbm);
\r