ARGH
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / Dock / src / Views.cpp
1 //////////////////////////////////////////////////////////////\r
2 // Views.cpp -  Definitions for the CViewSimple, CViewList,\r
3 //              CViewTree and CViewText classes\r
4 \r
5 \r
6 #include "stdafx.h"\r
7 #include "Views.h"\r
8 #include "resource.h"\r
9 \r
10 \r
11 ///////////////////////////////////////////////\r
12 // CViewSimple functions\r
13 void CViewSimple::OnDraw(CDC* pDC)\r
14 {\r
15         //Centre some text in the window\r
16         CRect rc = GetClientRect();\r
17         pDC->DrawText(_T("Simple View"), -1, rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE);\r
18 }\r
19 \r
20 LRESULT CViewSimple::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
21 {\r
22         switch(uMsg)\r
23         {\r
24         case WM_SIZE:\r
25                 Invalidate();\r
26                 break;\r
27         \r
28         case WM_WINDOWPOSCHANGED:\r
29                 Invalidate();\r
30                 break;\r
31         }\r
32 \r
33         return WndProcDefault(uMsg, wParam, lParam);\r
34 }\r
35 \r
36 \r
37 ///////////////////////////////////////////////\r
38 // CViewList functions\r
39 CViewList::CViewList() : m_himlSmall(0)\r
40 {\r
41 }\r
42 \r
43 CViewList::~CViewList()\r
44 {\r
45         if (IsWindow()) DeleteAllItems();\r
46         ImageList_Destroy(m_himlSmall);\r
47 }\r
48 \r
49 void CViewList::OnInitialUpdate()\r
50 {\r
51         // Set the image lists\r
52         m_himlSmall = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);\r
53         CBitmap bmImage(IDB_FILEVIEW);\r
54         ImageList_AddMasked(m_himlSmall, bmImage, RGB(255, 0, 255));\r
55         SetImageList(m_himlSmall, LVSIL_SMALL);\r
56 \r
57         // Set the report style\r
58         DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);\r
59         SetWindowLongPtr(GWL_STYLE, (dwStyle & ~LVS_TYPEMASK) | LVS_REPORT);\r
60 \r
61         SetColumns();\r
62         InsertItems();\r
63 }\r
64 \r
65 int CViewList::AddItem(LPCTSTR szText, int nImage)\r
66 {\r
67         LVITEM lvi = {0};\r
68         lvi.mask = LVIF_TEXT|LVIF_IMAGE;\r
69         lvi.iImage = nImage;\r
70         lvi.pszText = (LPTSTR)szText;\r
71 \r
72         return InsertItem(lvi);\r
73 }\r
74 \r
75 void CViewList::SetColumns()\r
76 {\r
77         //empty the list\r
78         DeleteAllItems();\r
79 \r
80         //initialise the columns\r
81         LV_COLUMN lvColumn = {0};\r
82         lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;\r
83         lvColumn.fmt = LVCFMT_LEFT;\r
84         lvColumn.cx = 120;\r
85         TCHAR szString[3][20] = {TEXT("Name"), TEXT("Size"), TEXT("Type")};\r
86         for(int i = 0; i < 3; ++i)\r
87         {\r
88                 lvColumn.pszText = szString[i];\r
89                 InsertColumn(i, lvColumn);\r
90         }\r
91 }\r
92 \r
93 BOOL CViewList::SetSubItem(int nItem, int nSubItem, LPCTSTR szText)\r
94 {\r
95         LVITEM lvi1 = {0};\r
96         lvi1.mask = LVIF_TEXT;\r
97         lvi1.iItem = nItem;\r
98         lvi1.iSubItem = nSubItem;\r
99         lvi1.pszText = (LPTSTR)szText;\r
100         return (BOOL)SendMessage(LVM_SETITEM, 0, (LPARAM)&lvi1);\r
101 }\r
102 \r
103 void CViewList::InsertItems()\r
104 {\r
105         // Add 4th item\r
106         int item = AddItem(_T("ListViewApp.h"), 2);\r
107         SetSubItem(item, 1, _T("1 KB"));\r
108         SetSubItem(item, 2, _T("C Header file"));\r
109 \r
110         // add 3rd item\r
111         item = AddItem(_T("ListViewApp.cpp"), 1);\r
112         SetSubItem(item, 1, _T("3 KB"));\r
113         SetSubItem(item, 2, _T("C++ Source file"));\r
114 \r
115         // add 2nd item\r
116         item = AddItem(_T("main.cpp"), 1);\r
117         SetSubItem(item, 1, _T("1 KB"));\r
118         SetSubItem(item, 2, _T("C++ Source file"));\r
119 \r
120         // add 1st item\r
121         item = AddItem(_T("ListView"), 0);\r
122         SetSubItem(item, 2, _T("Folder"));\r
123 }\r
124 \r
125 LRESULT CViewList::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
126 {\r
127         switch(uMsg)\r
128         {\r
129         case WM_DESTROY:\r
130                 {\r
131                         SetImageList(NULL, LVSIL_SMALL);\r
132                         break;\r
133                 }\r
134         }\r
135 \r
136         return WndProcDefault(uMsg, wParam, lParam);\r
137 }\r
138 \r
139 ///////////////////////////////////////////////\r
140 // CViewTree functions\r
141 CViewTree::CViewTree() : m_himlNormal(0)\r
142 {\r
143 }\r
144 \r
145 CViewTree::~CViewTree()\r
146 {\r
147         if (IsWindow()) DeleteAllItems();\r
148         ImageList_Destroy(m_himlNormal);\r
149 }\r
150 \r
151 \r
152 HTREEITEM CViewTree::AddItem(HTREEITEM hParent, LPCTSTR szText, int iImage)\r
153 {\r
154         TVITEM tvi = {0};\r
155         tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;\r
156         tvi.iImage = iImage;\r
157         tvi.iSelectedImage = iImage;\r
158         tvi.pszText = (LPTSTR)szText;\r
159 \r
160         TVINSERTSTRUCT tvis = {0};\r
161         tvis.hParent = hParent;\r
162         tvis.item = tvi;\r
163 \r
164         return InsertItem(tvis);\r
165 }\r
166 \r
167 void CViewTree::OnInitialUpdate()\r
168 {\r
169         //set the image lists\r
170         m_himlNormal = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);\r
171         CBitmap bmImage(IDB_CLASSVIEW);\r
172         ImageList_AddMasked(m_himlNormal, bmImage, RGB(255, 0, 0));\r
173         SetImageList(m_himlNormal, LVSIL_NORMAL);\r
174 \r
175         // Adjust style to show lines and [+] button\r
176         DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);\r
177         dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;\r
178         SetWindowLongPtr(GWL_STYLE, dwStyle);\r
179 \r
180         DeleteAllItems();\r
181 \r
182         // Add some tree-view items\r
183         HTREEITEM htiRoot = AddItem(NULL, _T("TreeView"), 0);\r
184         HTREEITEM htiCTreeViewApp = AddItem(htiRoot, _T("CTreeViewApp"), 1);\r
185         AddItem(htiCTreeViewApp, _T("CTreeViewApp()"), 3);\r
186         AddItem(htiCTreeViewApp, _T("GetMainFrame()"), 3);\r
187         AddItem(htiCTreeViewApp, _T("InitInstance()"), 3);\r
188         HTREEITEM htiMainFrame = AddItem(htiRoot, _T("CMainFrame"), 1);\r
189         AddItem(htiMainFrame, _T("CMainFrame()"), 3);\r
190         AddItem(htiMainFrame, _T("OnCommand()"), 4);\r
191         AddItem(htiMainFrame, _T("OnInitialUpdate()"), 4);\r
192         AddItem(htiMainFrame, _T("WndProc()"), 4);\r
193         HTREEITEM htiView = AddItem(htiRoot, _T("CView"), 1);\r
194         AddItem(htiView, _T("CView()"), 3);\r
195         AddItem(htiView, _T("OnInitialUpdate()"), 4);\r
196         AddItem(htiView, _T("WndProc()"), 4);\r
197 \r
198         // Expand some tree-view items\r
199         Expand(htiRoot, TVE_EXPAND);\r
200         Expand(htiCTreeViewApp, TVE_EXPAND); \r
201 }\r
202 \r
203 void CViewTree::PreCreate(CREATESTRUCT &cs)\r
204 {\r
205         cs.style = TVS_NOTOOLTIPS|WS_CHILD;\r
206         cs.lpszClass = WC_TREEVIEW;\r
207 }\r
208 \r
209 LRESULT CViewTree::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
210 {\r
211         switch(uMsg)\r
212         {\r
213         case WM_DESTROY:\r
214                 {\r
215                         SetImageList(NULL, LVSIL_SMALL);\r
216                         break;\r
217                 }\r
218         }\r
219 \r
220         return WndProcDefault(uMsg, wParam, lParam);\r
221 }\r
222 \r
223 ///////////////////////////////////////////////\r
224 // CViewText functions\r
225 void CViewText::OnInitialUpdate()\r
226 {\r
227         SetWindowText(_T("Text Edit Window\r\n\r\n You can type some text here ..."));\r
228 }\r
229 \r
230 void CViewText::PreCreate(CREATESTRUCT &cs)\r
231 {\r
232         cs.lpszClass = _T("EDIT");\r
233         cs.style = ES_MULTILINE|WS_CHILD;\r
234 }\r

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