Merge branch 'master' of git.ucc.asn.au:/matches/honours
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / DockTabbedMDI / 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 CMyCombo::CMyCombo() : m_himlImages(NULL)\r
10 {\r
11         SetImages(3, IDB_STATUS);\r
12 }\r
13 \r
14 CMyCombo::~CMyCombo()\r
15 {\r
16         ImageList_Destroy(m_himlImages);\r
17 }\r
18 \r
19 void CMyCombo::PreCreate(CREATESTRUCT &cs)\r
20 {\r
21         cs.lpszClass = WC_COMBOBOXEX;\r
22         cs.style = WS_VISIBLE | WS_CHILD | CBS_DROPDOWN;\r
23 \r
24         // Set the hight of the combobox in order to see a dropdown list\r
25         cs.cy = 100;\r
26 }\r
27 \r
28 BOOL CMyCombo::AddItems()\r
29 {\r
30     typedef struct\r
31         {\r
32         int iImage;\r
33         int iSelectedImage;\r
34         int iIndent;\r
35         LPTSTR pszText;\r
36     } ITEMINFO, *PITEMINFO;\r
37 \r
38     ITEMINFO IInf[ ] =\r
39         {\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
43     };\r
44 \r
45     int MaxItems = 3;\r
46         for(int i = 0; i < MaxItems; ++i)\r
47         {\r
48                 COMBOBOXEXITEM cbei = {0};\r
49                 cbei.mask = CBEIF_TEXT | CBEIF_INDENT | CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;\r
50         cbei.iItem          = i;\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
56 \r
57         // Add the items to the ComboBox's dropdown list\r
58         if(-1 == SendMessage(CBEM_INSERTITEM, 0L, (LPARAM)&cbei))\r
59             return FALSE;\r
60     }\r
61 \r
62         // Assign the existing image list to the ComboBoxEx control\r
63     SendMessage(CBEM_SETIMAGELIST, 0L, (LPARAM)m_himlImages);\r
64 \r
65     return TRUE;\r
66 }\r
67 \r
68 void CMyCombo::SetImages(int nImages, UINT ImageID)\r
69 {\r
70         if (m_himlImages)\r
71         {\r
72                 ImageList_Destroy(m_himlImages);\r
73                 m_himlImages = NULL;\r
74         }\r
75 \r
76         HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(ImageID));\r
77         BITMAP bm = {0};\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
85 }\r
86 \r
87 LRESULT CMyCombo::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
88 {\r
89         switch(uMsg)\r
90         {\r
91         case WM_DESTROY:\r
92                 {\r
93                         SendMessage(CBEM_SETIMAGELIST, 0L, 0L);\r
94                         break;\r
95                 }\r
96         }\r
97 \r
98         return WndProcDefault(uMsg, wParam, lParam);\r
99 }\r
100 \r

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