1 //////////////////////////////////////////////
\r
3 // Definitions for the CMyCombo class
\r
7 #include "resource.h"
\r
9 CMyCombo::CMyCombo() : m_himlImages(NULL)
\r
11 SetImages(3, IDB_STATUS);
\r
14 CMyCombo::~CMyCombo()
\r
16 ImageList_Destroy(m_himlImages);
\r
19 void CMyCombo::PreCreate(CREATESTRUCT &cs)
\r
21 cs.lpszClass = WC_COMBOBOXEX;
\r
22 cs.style = WS_VISIBLE | WS_CHILD | CBS_DROPDOWN;
\r
24 // Set the hight of the combobox in order to see a dropdown list
\r
28 BOOL CMyCombo::AddItems()
\r
36 } ITEMINFO, *PITEMINFO;
\r
40 { 0, 0, 0, (LPTSTR)_T("Item 1")},
\r
41 { 1, 1, 0, (LPTSTR)_T("Item 2")},
\r
42 { 2, 2, 0, (LPTSTR)_T("Item 3")},
\r
46 for(int i = 0; i < MaxItems; ++i)
\r
48 COMBOBOXEXITEM cbei = {0};
\r
49 cbei.mask = CBEIF_TEXT | CBEIF_INDENT | CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;
\r
51 cbei.pszText = IInf[i].pszText;
\r
52 cbei.cchTextMax = sizeof(IInf[i].pszText);
\r
53 cbei.iImage = IInf[i].iImage;
\r
54 cbei.iSelectedImage = IInf[i].iSelectedImage;
\r
55 cbei.iIndent = IInf[i].iIndent;
\r
57 // Add the items to the ComboBox's dropdown list
\r
58 if(-1 == SendMessage(CBEM_INSERTITEM, 0L, (LPARAM)&cbei))
\r
62 // Assign the existing image list to the ComboBoxEx control
\r
63 SendMessage(CBEM_SETIMAGELIST, 0L, (LPARAM)m_himlImages);
\r
68 void CMyCombo::SetImages(int nImages, UINT ImageID)
\r
72 ImageList_Destroy(m_himlImages);
\r
73 m_himlImages = NULL;
\r
76 HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(ImageID));
\r
78 ::GetObject(hbm, sizeof(BITMAP), &bm);
\r
79 int iImageWidth = bm.bmWidth / nImages;
\r
80 int iImageHeight = bm.bmHeight;
\r
81 COLORREF crMask = RGB(255,0,255);
\r
82 m_himlImages = ImageList_Create(iImageWidth, iImageHeight, ILC_COLOR32 | ILC_MASK, nImages, 0);
\r
83 ImageList_AddMasked(m_himlImages, hbm, crMask);
\r
84 ::DeleteObject(hbm);
\r
87 LRESULT CMyCombo::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
93 SendMessage(CBEM_SETIMAGELIST, 0L, 0L);
\r
98 return WndProcDefault(uMsg, wParam, lParam);
\r