1 //////////////////////////////////////////////////////////////
\r
2 // Views.cpp - Definitions for the CViewSimple, CViewList,
\r
3 // CViewTree and CViewText classes
\r
8 #include "resource.h"
\r
11 ///////////////////////////////////////////////
\r
12 // CViewSimple functions
\r
13 void CViewSimple::OnDraw(CDC* pDC)
\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
20 LRESULT CViewSimple::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
28 case WM_WINDOWPOSCHANGED:
\r
33 return WndProcDefault(uMsg, wParam, lParam);
\r
37 ///////////////////////////////////////////////
\r
38 // CViewList functions
\r
39 CViewList::CViewList() : m_himlSmall(0)
\r
43 CViewList::~CViewList()
\r
45 if (IsWindow()) DeleteAllItems();
\r
46 ImageList_Destroy(m_himlSmall);
\r
49 void CViewList::OnInitialUpdate()
\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
57 // Set the report style
\r
58 DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);
\r
59 SetWindowLongPtr(GWL_STYLE, (dwStyle & ~LVS_TYPEMASK) | LVS_REPORT);
\r
65 int CViewList::AddItem(LPCTSTR szText, int nImage)
\r
68 lvi.mask = LVIF_TEXT|LVIF_IMAGE;
\r
69 lvi.iImage = nImage;
\r
70 lvi.pszText = (LPTSTR)szText;
\r
72 return InsertItem(lvi);
\r
75 void CViewList::SetColumns()
\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
85 TCHAR szString[3][20] = {TEXT("Name"), TEXT("Size"), TEXT("Type")};
\r
86 for(int i = 0; i < 3; ++i)
\r
88 lvColumn.pszText = szString[i];
\r
89 InsertColumn(i, lvColumn);
\r
93 BOOL CViewList::SetSubItem(int nItem, int nSubItem, LPCTSTR szText)
\r
96 lvi1.mask = LVIF_TEXT;
\r
98 lvi1.iSubItem = nSubItem;
\r
99 lvi1.pszText = (LPTSTR)szText;
\r
100 return (BOOL)SendMessage(LVM_SETITEM, 0, (LPARAM)&lvi1);
\r
103 void CViewList::InsertItems()
\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
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
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
121 item = AddItem(_T("ListView"), 0);
\r
122 SetSubItem(item, 2, _T("Folder"));
\r
125 LRESULT CViewList::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
131 SetImageList(NULL, LVSIL_SMALL);
\r
136 return WndProcDefault(uMsg, wParam, lParam);
\r
139 ///////////////////////////////////////////////
\r
140 // CViewTree functions
\r
141 CViewTree::CViewTree() : m_himlNormal(0)
\r
145 CViewTree::~CViewTree()
\r
147 if (IsWindow()) DeleteAllItems();
\r
148 ImageList_Destroy(m_himlNormal);
\r
152 HTREEITEM CViewTree::AddItem(HTREEITEM hParent, LPCTSTR szText, int iImage)
\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
160 TVINSERTSTRUCT tvis = {0};
\r
161 tvis.hParent = hParent;
\r
164 return InsertItem(tvis);
\r
167 void CViewTree::OnInitialUpdate()
\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
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
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
198 // Expand some tree-view items
\r
199 Expand(htiRoot, TVE_EXPAND);
\r
200 Expand(htiCTreeViewApp, TVE_EXPAND);
\r
203 void CViewTree::PreCreate(CREATESTRUCT &cs)
\r
205 cs.style = TVS_NOTOOLTIPS|WS_CHILD;
\r
206 cs.lpszClass = WC_TREEVIEW;
\r
209 LRESULT CViewTree::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
215 SetImageList(NULL, LVSIL_SMALL);
\r
220 return WndProcDefault(uMsg, wParam, lParam);
\r
223 ///////////////////////////////////////////////
\r
224 // CViewText functions
\r
225 void CViewText::OnInitialUpdate()
\r
227 SetWindowText(_T("Text Edit Window\r\n\r\n You can type some text here ..."));
\r
230 void CViewText::PreCreate(CREATESTRUCT &cs)
\r
232 cs.lpszClass = _T("EDIT");
\r
233 cs.style = ES_MULTILINE|WS_CHILD;
\r