--- /dev/null
+//////////////////////////////////////////////////////////////\r
+// Views.cpp - Definitions for the CViewSimple, CViewList,\r
+// CViewTree and CViewText classes\r
+\r
+#include "stdafx.h"\r
+#include "SplitterApp.h"\r
+#include "Views.h"\r
+#include "resource.h"\r
+\r
+\r
+///////////////////////////////////////////////\r
+// CViewSimple functions\r
+void CViewSimple::OnDraw(CDC* pDC)\r
+{\r
+ //Centre some text in the window\r
+ CRect rc = GetClientRect();\r
+ pDC->DrawText(_T("Simple View"), -1, rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE);\r
+}\r
+\r
+LRESULT CViewSimple::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+ switch(uMsg)\r
+ {\r
+ case WM_SIZE:\r
+ Invalidate();\r
+ break;\r
+ }\r
+\r
+ return WndProcDefault(uMsg, wParam, lParam);\r
+}\r
+\r
+\r
+///////////////////////////////////////////////\r
+// CViewList functions\r
+CViewList::CViewList() : m_himlSmall(0)\r
+{\r
+}\r
+\r
+CViewList::~CViewList()\r
+{\r
+ if (IsWindow()) DeleteAllItems();\r
+}\r
+\r
+void CViewList::OnInitialUpdate()\r
+{\r
+ // Set the image lists\r
+ m_himlSmall = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);\r
+ HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(IDB_FILEVIEW));\r
+ ImageList_AddMasked(m_himlSmall, hbm, RGB(255, 0, 255));\r
+ SetImageList(m_himlSmall, LVSIL_SMALL);\r
+\r
+ // Set the report style\r
+ DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);\r
+ SetWindowLongPtr(GWL_STYLE, (dwStyle & ~LVS_TYPEMASK) | LVS_REPORT);\r
+\r
+ SetColumns();\r
+ InsertItems();\r
+}\r
+\r
+int CViewList::AddItem(LPCTSTR szText, int nImage)\r
+{\r
+ LVITEM lvi = {0};\r
+ lvi.mask = LVIF_TEXT|LVIF_IMAGE;\r
+ lvi.iImage = nImage;\r
+ lvi.pszText = (LPTSTR)szText;\r
+\r
+ return InsertItem(lvi);\r
+}\r
+\r
+void CViewList::SetColumns()\r
+{\r
+ //empty the list\r
+ DeleteAllItems();\r
+\r
+ //initialise the columns\r
+ LV_COLUMN lvColumn = {0};\r
+ lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;\r
+ lvColumn.fmt = LVCFMT_LEFT;\r
+ lvColumn.cx = 120;\r
+ TCHAR szString[3][20] = {TEXT("Name"), TEXT("Size"), TEXT("Type")};\r
+ for(int i = 0; i < 3; ++i)\r
+ {\r
+ lvColumn.pszText = szString[i];\r
+ InsertColumn(i, lvColumn);\r
+ }\r
+}\r
+\r
+BOOL CViewList::SetSubItem(int nItem, int nSubItem, LPCTSTR szText)\r
+{\r
+ LVITEM lvi1 = {0};\r
+ lvi1.mask = LVIF_TEXT;\r
+ lvi1.iItem = nItem;\r
+ lvi1.iSubItem = nSubItem;\r
+ lvi1.pszText = (LPTSTR)szText;\r
+ return (BOOL)SendMessage(LVM_SETITEM, 0, (LPARAM)&lvi1);\r
+}\r
+\r
+void CViewList::InsertItems()\r
+{\r
+ // Add 4th item\r
+ int item = AddItem(_T("ListViewApp.h"), 2);\r
+ SetSubItem(item, 1, _T("1 KB"));\r
+ SetSubItem(item, 2, _T("C Header file"));\r
+\r
+ // add 3rd item\r
+ item = AddItem(_T("ListViewApp.cpp"), 1);\r
+ SetSubItem(item, 1, _T("3 KB"));\r
+ SetSubItem(item, 2, _T("C++ Source file"));\r
+\r
+ // add 2nd item\r
+ item = AddItem(_T("main.cpp"), 1);\r
+ SetSubItem(item, 1, _T("1 KB"));\r
+ SetSubItem(item, 2, _T("C++ Source file"));\r
+\r
+ // add 1st item\r
+ item = AddItem(_T("ListView"), 0);\r
+ SetSubItem(item, 2, _T("Folder"));\r
+}\r
+\r
+\r
+///////////////////////////////////////////////\r
+// CViewTree functions\r
+CViewTree::CViewTree() : m_himlNormal(0)\r
+{\r
+}\r
+\r
+CViewTree::~CViewTree()\r
+{\r
+ if (IsWindow()) DeleteAllItems();\r
+}\r
+\r
+void CViewTree::OnInitialUpdate()\r
+{\r
+ //set the image lists\r
+ m_himlNormal = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);\r
+ HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(IDB_CLASSVIEW));\r
+ ImageList_AddMasked(m_himlNormal, hbm, RGB(255, 0, 0));\r
+ SetImageList(m_himlNormal, LVSIL_NORMAL);\r
+\r
+ // Adjust style to show lines and [+] button\r
+ DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);\r
+ dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;\r
+ SetWindowLongPtr(GWL_STYLE, dwStyle);\r
+\r
+ DeleteAllItems();\r
+\r
+ // Add some tree-view items\r
+ HTREEITEM htiRoot = AddItem(NULL, _T("TreeView"), 0);\r
+ HTREEITEM htiCTreeViewApp = AddItem(htiRoot, _T("CTreeViewApp"), 1);\r
+ AddItem(htiCTreeViewApp, _T("CTreeViewApp()"), 3);\r
+ AddItem(htiCTreeViewApp, _T("GetMainFrame()"), 3);\r
+ AddItem(htiCTreeViewApp, _T("InitInstance()"), 3);\r
+ HTREEITEM htiMainFrame = AddItem(htiRoot, _T("CMainFrame"), 1);\r
+ AddItem(htiMainFrame, _T("CMainFrame()"), 3);\r
+ AddItem(htiMainFrame, _T("OnCommand()"), 4);\r
+ AddItem(htiMainFrame, _T("OnInitialUpdate()"), 4);\r
+ AddItem(htiMainFrame, _T("WndProc()"), 4);\r
+ HTREEITEM htiView = AddItem(htiRoot, _T("CView"), 1);\r
+ AddItem(htiView, _T("CView()"), 3);\r
+ AddItem(htiView, _T("OnInitialUpdate()"), 4);\r
+ AddItem(htiView, _T("WndProc()"), 4);\r
+\r
+ // Expand some tree-view items\r
+ Expand(htiRoot, TVE_EXPAND);\r
+ Expand(htiCTreeViewApp, TVE_EXPAND);\r
+}\r
+\r
+HTREEITEM CViewTree::AddItem(HTREEITEM hParent, LPCTSTR szText, int iImage)\r
+{\r
+ TVITEM tvi = {0};\r
+ tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;\r
+ tvi.iImage = iImage;\r
+ tvi.iSelectedImage = iImage;\r
+ tvi.pszText = (LPTSTR)szText;\r
+\r
+ TVINSERTSTRUCT tvis = {0};\r
+ tvis.hParent = hParent;\r
+ tvis.item = tvi;\r
+\r
+ return InsertItem(tvis);\r
+}\r
+\r
+\r
+///////////////////////////////////////////////\r
+// CViewText functions\r
+void CViewText::OnInitialUpdate()\r
+{\r
+ SetWindowText(_T("Text Edit Window\r\n\r\n\r\n\r\n You can type some text here ..."));\r
+}\r
+\r
+void CViewText::PreCreate(CREATESTRUCT &cs)\r
+{\r
+ cs.lpszClass = _T("EDIT");\r
+ cs.style = ES_MULTILINE|WS_CHILD;\r
+}\r
+\r