1 ///////////////////////////////////////////////////
\r
2 // Classes.cpp - Definitions for the CViewClasses, CContainClasses
\r
3 // and CDockClasses classes
\r
7 #include "resource.h"
\r
8 #include "TabbedMDIApp.h"
\r
11 ///////////////////////////////////////////////
\r
12 // CViewClasses functions
\r
13 CViewClasses::CViewClasses() : m_himlNormal(0)
\r
17 CViewClasses::~CViewClasses()
\r
19 if (IsWindow()) DeleteAllItems();
\r
20 ImageList_Destroy(m_himlNormal);
\r
23 HTREEITEM CViewClasses::AddItem(HTREEITEM hParent, LPCTSTR szText, int iImage)
\r
26 tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
\r
27 tvi.iImage = iImage;
\r
28 tvi.iSelectedImage = iImage;
\r
29 tvi.pszText = (LPTSTR)szText;
\r
31 TVINSERTSTRUCT tvis = {0};
\r
32 tvis.hParent = hParent;
\r
35 return InsertItem(tvis);
\r
38 void CViewClasses::OnInitialUpdate()
\r
40 //set the image lists
\r
41 m_himlNormal = ImageList_Create(16, 15, ILC_COLOR32 | ILC_MASK, 1, 0);
\r
42 HBITMAP hbm = LoadBitmap(MAKEINTRESOURCE(IDB_CLASSVIEW));
\r
43 ImageList_AddMasked(m_himlNormal, hbm, RGB(255, 0, 0));
\r
44 SetImageList(m_himlNormal, LVSIL_NORMAL);
\r
45 ::DeleteObject(hbm);
\r
47 // Adjust style to show lines and [+] button
\r
48 DWORD dwStyle = (DWORD)GetWindowLongPtr(GWL_STYLE);
\r
49 dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
\r
50 SetWindowLongPtr(GWL_STYLE, dwStyle);
\r
54 // Add some tree-view items
\r
55 HTREEITEM htiRoot = AddItem(NULL, _T("TreeView"), 0);
\r
56 HTREEITEM htiCTreeViewApp = AddItem(htiRoot, _T("CTreeViewApp"), 1);
\r
57 AddItem(htiCTreeViewApp, _T("CTreeViewApp()"), 3);
\r
58 AddItem(htiCTreeViewApp, _T("GetMainFrame()"), 3);
\r
59 AddItem(htiCTreeViewApp, _T("InitInstance()"), 3);
\r
60 HTREEITEM htiMainFrame = AddItem(htiRoot, _T("CMainFrame"), 1);
\r
61 AddItem(htiMainFrame, _T("CMainFrame()"), 3);
\r
62 AddItem(htiMainFrame, _T("OnCommand()"), 4);
\r
63 AddItem(htiMainFrame, _T("OnInitialUpdate()"), 4);
\r
64 AddItem(htiMainFrame, _T("WndProc()"), 4);
\r
65 HTREEITEM htiView = AddItem(htiRoot, _T("CView"), 1);
\r
66 AddItem(htiView, _T("CView()"), 3);
\r
67 AddItem(htiView, _T("OnInitialUpdate()"), 4);
\r
68 AddItem(htiView, _T("WndProc()"), 4);
\r
70 // Expand some tree-view items
\r
71 Expand(htiRoot, TVE_EXPAND);
\r
72 Expand(htiCTreeViewApp, TVE_EXPAND);
\r
75 void CViewClasses::PreCreate(CREATESTRUCT &cs)
\r
77 cs.style = TVS_NOTOOLTIPS|WS_CHILD;
\r
78 cs.lpszClass = WC_TREEVIEW;
\r
81 LRESULT CViewClasses::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
87 SetImageList(NULL, LVSIL_SMALL);
\r
92 return WndProcDefault(uMsg, wParam, lParam);
\r
96 ///////////////////////////////////////////////
\r
97 // CContainClasses functions
\r
98 CContainClasses::CContainClasses()
\r
100 SetTabText(_T("ClassView"));
\r
101 SetTabIcon(IDI_CLASSVIEW);
\r
102 SetDockCaption (_T("Class View - Docking container"));
\r
103 SetView(m_ViewClasses);
\r
106 void CContainClasses::AddCombo()
\r
108 int nComboWidth = 120;
\r
109 CToolBar& TB = GetToolBar();
\r
110 if (TB.CommandToIndex(IDM_FILE_SAVE) < 0) return;
\r
112 // Adjust button width and convert to separator
\r
113 TB.SetButtonStyle(IDM_FILE_SAVE, TBSTYLE_SEP);
\r
114 TB.SetButtonWidth(IDM_FILE_SAVE, nComboWidth);
\r
116 // Determine the size and position of the ComboBox
\r
117 int nIndex = TB.CommandToIndex(IDM_FILE_SAVE);
\r
118 CRect rect = TB.GetItemRect(nIndex);
\r
120 // Create the ComboboxEx window
\r
121 m_ComboBoxEx.Create(&TB);
\r
122 m_ComboBoxEx.SetWindowPos(NULL, rect, SWP_NOACTIVATE);
\r
124 // Adjust the toolbar height to accomodate the ComboBoxEx control
\r
125 CRect rc = m_ComboBoxEx.GetWindowRect();
\r
126 GetToolBar().SendMessage(TB_SETBUTTONSIZE, 0, (LPARAM) MAKELONG (rc.Height(), rc.Height()));
\r
128 // Add the ComboBox's items
\r
129 m_ComboBoxEx.AddItems();
\r
132 BOOL CContainClasses::OnCommand(WPARAM wParam, LPARAM lParam)
\r
134 UNREFERENCED_PARAMETER(lParam);
\r
136 // OnCommand responds to menu and and toolbar input
\r
138 switch(LOWORD(wParam))
\r
141 TRACE(_T("File New\n"));
\r
143 case IDM_FILE_OPEN:
\r
144 TRACE(_T("File Open\n"));
\r
146 case IDM_FILE_SAVE:
\r
147 TRACE(_T("FILE Save\n"));
\r
154 void CContainClasses::SetupToolBar()
\r
156 // Set the Bitmap resource for the toolbar
\r
157 GetToolBar().SetImages(RGB(192,192,192), IDW_MAIN, 0, 0);
\r
159 // Set the Resource IDs for the toolbar buttons
\r
160 AddToolBarButton( IDM_FILE_NEW );
\r
161 AddToolBarButton( IDM_FILE_OPEN, FALSE );
\r
163 AddToolBarButton( 0 ); // Separator
\r
164 AddToolBarButton( IDM_FILE_SAVE, FALSE );
\r
166 AddToolBarButton( 0 ); // Separator
\r
167 AddToolBarButton( IDM_EDIT_CUT );
\r
168 AddToolBarButton( IDM_EDIT_COPY );
\r
169 AddToolBarButton( IDM_EDIT_PASTE );
\r
171 AddToolBarButton( 0 ); // Separator
\r
172 AddToolBarButton( IDM_FILE_PRINT, FALSE );
\r
174 AddToolBarButton( 0 ); // Separator
\r
175 AddToolBarButton( IDM_HELP_ABOUT );
\r
177 // Add the ComboBarEx control to the toolbar
\r
180 // Match the Container's ToolBar theme to the MainFrame's toolbar theme
\r
181 ToolBarTheme tt = GetTabbedMDIApp().GetMainFrame().GetToolBar().GetToolBarTheme();
\r
182 GetToolBar().SetToolBarTheme(tt);
\r
186 /////////////////////////////////////////////////
\r
187 // Definitions for the CDockClasses class
\r
188 CDockClasses::CDockClasses()
\r
190 SetView(m_Classes);
\r
193 void CDockClasses::OnInitialUpdate()
\r
195 // Set the width of the splitter bar
\r