1 ///////////////////////////////////////////////////
\r
2 // Classes.cpp - Definitions for the CViewClasses, CContainClasses
\r
3 // and CDockClasses classes
\r
8 #include "resource.h"
\r
9 #include "ContainerApp.h"
\r
12 ///////////////////////////////////////////////
\r
13 // CViewClasses functions
\r
14 CViewClasses::CViewClasses() : m_himlNormal(0)
\r
18 CViewClasses::~CViewClasses()
\r
20 if (IsWindow()) DeleteAllItems();
\r
21 ImageList_Destroy(m_himlNormal);
\r
24 HTREEITEM CViewClasses::AddItem(HTREEITEM hParent, LPCTSTR szText, int iImage)
\r
27 tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
\r
28 tvi.iImage = iImage;
\r
29 tvi.iSelectedImage = iImage;
\r
30 tvi.pszText = (LPTSTR)szText;
\r
32 TVINSERTSTRUCT tvis = {0};
\r
33 tvis.hParent = hParent;
\r
36 return InsertItem(tvis);
\r
39 void CViewClasses::OnInitialUpdate()
\r
41 //set the image lists
\r
42 m_himlNormal = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);
\r
43 HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(IDB_CLASSVIEW));
\r
44 ImageList_AddMasked(m_himlNormal, hbm, RGB(255, 0, 0));
\r
45 SetImageList(m_himlNormal, LVSIL_NORMAL);
\r
46 ::DeleteObject(hbm);
\r
48 // Adjust style to show lines and [+] button
\r
49 DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);
\r
50 dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
\r
51 SetWindowLongPtr(GWL_STYLE, dwStyle);
\r
55 // Add some tree-view items
\r
56 HTREEITEM htiRoot = AddItem(NULL, _T("TreeView"), 0);
\r
57 HTREEITEM htiCTreeViewApp = AddItem(htiRoot, _T("CTreeViewApp"), 1);
\r
58 AddItem(htiCTreeViewApp, _T("CTreeViewApp()"), 3);
\r
59 AddItem(htiCTreeViewApp, _T("GetMainFrame()"), 3);
\r
60 AddItem(htiCTreeViewApp, _T("InitInstance()"), 3);
\r
61 HTREEITEM htiMainFrame = AddItem(htiRoot, _T("CMainFrame"), 1);
\r
62 AddItem(htiMainFrame, _T("CMainFrame()"), 3);
\r
63 AddItem(htiMainFrame, _T("OnCommand()"), 4);
\r
64 AddItem(htiMainFrame, _T("OnInitialUpdate()"), 4);
\r
65 AddItem(htiMainFrame, _T("WndProc()"), 4);
\r
66 HTREEITEM htiView = AddItem(htiRoot, _T("CView"), 1);
\r
67 AddItem(htiView, _T("CView()"), 3);
\r
68 AddItem(htiView, _T("OnInitialUpdate()"), 4);
\r
69 AddItem(htiView, _T("WndProc()"), 4);
\r
71 // Expand some tree-view items
\r
72 Expand(htiRoot, TVE_EXPAND);
\r
73 Expand(htiCTreeViewApp, TVE_EXPAND);
\r
76 void CViewClasses::PreCreate(CREATESTRUCT &cs)
\r
78 cs.style = TVS_NOTOOLTIPS|WS_CHILD;
\r
79 cs.lpszClass = WC_TREEVIEW;
\r
82 LRESULT CViewClasses::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
88 SetImageList(NULL, LVSIL_SMALL);
\r
93 return WndProcDefault(uMsg, wParam, lParam);
\r
97 ///////////////////////////////////////////////
\r
98 // CContainClasses functions
\r
99 CContainClasses::CContainClasses()
\r
101 SetTabText(_T("ClassView"));
\r
102 SetTabIcon(IDI_CLASSVIEW);
\r
103 SetDockCaption (_T("Class View - Docking container"));
\r
104 SetView(m_ViewClasses);
\r
107 void CContainClasses::AddCombo()
\r
109 int nComboWidth = 120;
\r
110 CToolBar& TB = GetToolBar();
\r
111 if (TB.CommandToIndex(IDM_FILE_SAVE) < 0) return;
\r
113 // Adjust button width and convert to separator
\r
114 TB.SetButtonStyle(IDM_FILE_SAVE, TBSTYLE_SEP);
\r
115 TB.SetButtonWidth(IDM_FILE_SAVE, nComboWidth);
\r
117 // Determine the size and position of the ComboBox
\r
118 int nIndex = TB.CommandToIndex(IDM_FILE_SAVE);
\r
119 CRect rect = TB.GetItemRect(nIndex);
\r
121 // Create the ComboboxEx window
\r
122 m_ComboBoxEx.Create(&TB);
\r
123 m_ComboBoxEx.SetWindowPos(NULL, rect, SWP_NOACTIVATE);
\r
125 // Adjust the toolbar height to accomodate the ComboBoxEx control
\r
126 CRect rc = m_ComboBoxEx.GetWindowRect();
\r
127 GetToolBar().SendMessage(TB_SETBUTTONSIZE, 0, (LPARAM) MAKELONG (rc.Height(), rc.Height()));
\r
129 // Add the ComboBox's items
\r
130 m_ComboBoxEx.AddItems();
\r
133 BOOL CContainClasses::OnCommand(WPARAM wParam, LPARAM lParam)
\r
135 UNREFERENCED_PARAMETER(lParam);
\r
137 // OnCommand responds to menu and and toolbar input
\r
139 switch(LOWORD(wParam))
\r
142 TRACE(_T("File New\n"));
\r
144 case IDM_FILE_OPEN:
\r
145 TRACE(_T("File Open\n"));
\r
147 case IDM_FILE_SAVE:
\r
148 TRACE(_T("FILE Save\n"));
\r
155 void CContainClasses::SetupToolBar()
\r
157 // Set the Bitmap resource for the toolbar
\r
158 GetToolBar().SetImages(RGB(192,192,192), IDW_MAIN, 0, 0);
\r
160 // Set the Resource IDs for the toolbar buttons
\r
161 AddToolBarButton( IDM_FILE_NEW );
\r
162 AddToolBarButton( IDM_FILE_OPEN, FALSE );
\r
164 AddToolBarButton( 0 ); // Separator
\r
165 AddToolBarButton( IDM_FILE_SAVE, FALSE );
\r
167 AddToolBarButton( 0 ); // Separator
\r
168 AddToolBarButton( IDM_EDIT_CUT );
\r
169 AddToolBarButton( IDM_EDIT_COPY );
\r
170 AddToolBarButton( IDM_EDIT_PASTE );
\r
172 AddToolBarButton( 0 ); // Separator
\r
173 AddToolBarButton( IDM_FILE_PRINT, FALSE );
\r
175 AddToolBarButton( 0 ); // Separator
\r
176 AddToolBarButton( IDM_HELP_ABOUT );
\r
178 // Add the ComboBarEx control to the toolbar
\r
181 // Match the Container's ToolBar theme to the MainFrame's toolbar theme
\r
182 ToolBarTheme tt = GetContainerApp().GetMainFrame().GetToolBar().GetToolBarTheme();
\r
183 GetToolBar().SetToolBarTheme(tt);
\r
187 /////////////////////////////////////////////////
\r
188 // Definitions for the CDockClasses class
\r
189 CDockClasses::CDockClasses()
\r
191 SetView(m_Classes);
\r
194 void CDockClasses::OnInitialUpdate()
\r
196 // Set the width of the splitter bar
\r