Merge branch 'master' of git.ucc.asn.au:/matches/honours
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / Themes / src / MyCombo.cpp
1 //////////////////////////////////////////////\r
2 // MyCombo.cpp\r
3 //  Definitions for the CMyCombo class\r
4 \r
5 #include "stdafx.h"\r
6 #include "MyCombo.h"\r
7 #include "resource.h"\r
8 \r
9 \r
10 CMyCombo::CMyCombo() : m_himlImages(NULL)\r
11 {\r
12         SetImages(3, IDB_STATUS);\r
13 }\r
14 \r
15 CMyCombo::~CMyCombo()\r
16 {\r
17         ImageList_Destroy(m_himlImages);\r
18 }\r
19 \r
20 void CMyCombo::PreCreate(CREATESTRUCT &cs)\r
21 {\r
22         cs.lpszClass = WC_COMBOBOXEX;\r
23         cs.style = WS_VISIBLE | WS_CHILD | CBS_DROPDOWN;\r
24 \r
25         // Set the hight of the combobox in order to see a dropdown list\r
26         cs.cy = 100;\r
27 }\r
28 \r
29 BOOL CMyCombo::AddItems()\r
30 {\r
31     typedef struct\r
32         {\r
33         int iImage;\r
34         int iSelectedImage;\r
35         int iIndent;\r
36         LPTSTR pszText;\r
37     } ITEMINFO, *PITEMINFO;\r
38 \r
39     ITEMINFO IInf[ ] =\r
40         {\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
44     };\r
45 \r
46     int MaxItems = 3;\r
47         for(int i = 0; i < MaxItems; ++i)\r
48         {\r
49                 COMBOBOXEXITEM cbei = {0};\r
50                 cbei.mask = CBEIF_TEXT | CBEIF_INDENT | CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;\r
51         cbei.iItem          = i;\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
57 \r
58         // Add the items to the ComboBox's dropdown list\r
59         if(-1 == SendMessage(CBEM_INSERTITEM, 0, (LPARAM)&cbei))\r
60             return FALSE;\r
61     }\r
62 \r
63         // Assign the existing image list to the ComboBoxEx control\r
64     SendMessage(CBEM_SETIMAGELIST, 0, (LPARAM)m_himlImages);\r
65 \r
66     return TRUE;\r
67 }\r
68 \r
69 void CMyCombo::SetImages(int nImages, UINT ImageID)\r
70 {\r
71         if (m_himlImages)\r
72         {\r
73                 ImageList_Destroy(m_himlImages);\r
74                 m_himlImages = NULL;\r
75         }\r
76 \r
77         HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(ImageID));\r
78         BITMAP bm = {0};\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
86 }\r
87 \r

UCC git Repository :: git.ucc.asn.au