ARGH
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / MDIFrameDemo / src / MainMDIfrm.cpp
1 ////////////////////////////////////////////////////\r
2 // MainMDIfrm.cpp  - definitions for the CMainMDIFrame class\r
3 \r
4 #include "stdafx.h"\r
5 #include "resource.h"\r
6 #include "mainMDIfrm.h"\r
7 #include "MDIChildSimple.h"\r
8 #include "MDIChildRect.h"\r
9 #include "MDIChildMax.h"\r
10 #include "MDIChildText.h"\r
11 #include "MDIChildTreeView.h"\r
12 #include "MDIChildListView.h"\r
13 \r
14 \r
15 CMainMDIFrame::CMainMDIFrame()\r
16 {\r
17         // Set the registry key name, and load the initial window position\r
18         // Use a registry key name like "CompanyName\\Application"\r
19         LoadRegistrySettings(_T("Win32++\\MDI Frame Sample"));\r
20 }\r
21 \r
22 CMainMDIFrame::~CMainMDIFrame()\r
23 {\r
24 }\r
25 \r
26 void CMainMDIFrame::OnInitialUpdate()\r
27 {\r
28         //The frame is now created.\r
29         //Place any additional startup code here.\r
30 }\r
31 \r
32 void CMainMDIFrame::OnFileNew()\r
33 {\r
34         // Creates the popup menu when the "New" toolbar button is pressed\r
35 \r
36         // Position the popup menu\r
37         CToolBar& TB = GetToolBar();\r
38         RECT rc = TB.GetItemRect(TB.CommandToIndex(IDM_FILE_NEW));\r
39         TB.MapWindowPoints(NULL, (LPPOINT)&rc, 2);\r
40 \r
41         TPMPARAMS tpm;\r
42         tpm.cbSize = sizeof(TPMPARAMS);\r
43         tpm.rcExclude = rc;\r
44 \r
45         // Load the popup menu\r
46         CMenu TopMenu(IDM_NEWMENU);\r
47         CMenu* pPopupMenu = TopMenu.GetSubMenu(0);\r
48 \r
49         // Start the popup menu\r
50         pPopupMenu->TrackPopupMenuEx(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, rc.left, rc.bottom, this, &tpm);\r
51 }\r
52 \r
53 BOOL CMainMDIFrame::OnCommand(WPARAM wParam, LPARAM lParam)\r
54 {\r
55         switch (LOWORD(wParam))\r
56         {\r
57         case IDM_FILE_NEW:\r
58                 // For ComCtl versions 4.71 and older\r
59                 OnFileNew();\r
60                 return TRUE;\r
61         case IDM_FILE_NEWVIEW:\r
62                 AddMDIChild(new CMDIChildSimple);       // CMDIFrame::RemoveMDIChild deletes this pointer\r
63                 return TRUE;\r
64         case IDM_FILE_NEWRECT:\r
65                 AddMDIChild(new CMDIChildRect); // CMDIFrame::RemoveMDIChild deletes this pointer\r
66                 return TRUE;\r
67         case IDM_FILE_NEWTEXT:\r
68                 AddMDIChild(new CMDIChildText); // CMDIFrame::RemoveMDIChild deletes this pointer\r
69                 return TRUE;\r
70         case IDM_FILE_NEWMAX:\r
71                 AddMDIChild(new CMDIChildMax);  // CMDIFrame::RemoveMDIChild deletes this pointer\r
72                 return TRUE;\r
73         case IDM_FILE_NEWTREE:\r
74                 AddMDIChild(new CMDIChildTreeView);     // CMDIFrame::RemoveMDIChild deletes this pointer\r
75                 return TRUE;\r
76         case IDM_FILE_NEWLIST:\r
77                 AddMDIChild(new CMDIChildListView);     // CMDIFrame::RemoveMDIChild deletes this pointer\r
78                 return TRUE;\r
79         case IDM_FILE_CLOSE:    // Close the active MDI window\r
80                 GetActiveMDIChild()->SendMessage(WM_CLOSE, 0L, 0L);\r
81                 return TRUE;\r
82         case IDM_FILE_EXIT:\r
83                 SendMessage(WM_CLOSE, 0L, 0L);\r
84                 return TRUE;\r
85         case IDW_VIEW_STATUSBAR:\r
86                 OnViewStatusBar();\r
87                 UpdateCheckMarks();\r
88                 break;\r
89         case IDW_VIEW_TOOLBAR:\r
90                 OnViewToolBar();\r
91                 UpdateCheckMarks();\r
92                 break;\r
93         case IDW_MDI_ARRANGE:\r
94                 MDIIconArrange();\r
95                 break;\r
96         case IDW_MDI_CASCADE:\r
97                 MDICascade();\r
98                 break;\r
99         case IDW_MDI_CLOSEALL:\r
100                 RemoveAllMDIChildren();\r
101                 break;\r
102         case IDW_MDI_TILE:\r
103                 MDITile();\r
104                 break;\r
105         default:    // Pass to active child...\r
106                 {\r
107                         if (GetActiveMDIChild())\r
108                                 GetActiveMDIChild()->SendMessage(WM_COMMAND, wParam, lParam);\r
109                 }\r
110                 break ;\r
111         case IDM_HELP_ABOUT:\r
112                 OnHelp();\r
113                 return TRUE;\r
114         }\r
115 \r
116         return FALSE;\r
117 }\r
118 \r
119 void CMainMDIFrame::OnCreate()\r
120 {\r
121         // OnCreate controls the way the frame is created.\r
122         // Overriding CFrame::Oncreate is optional.\r
123         // The default for the following variables is TRUE\r
124 \r
125         // m_bShowIndicatorStatus = FALSE;      // Don't show statusbar indicators\r
126         // m_bShowMenuStatus = FALSE;           // Don't show toolbar or menu status\r
127         // m_bUseReBar = FALSE;                         // Don't use rebars\r
128         // m_bUseThemes = FALSE;            // Don't use themes\r
129         // m_bUseToolBar = FALSE;                       // Don't use a toolbar\r
130         // m_bUseCustomDraw = FALSE;            // Don't use custom draw for menu items\r
131 \r
132         // call the base class function\r
133         CMDIFrame::OnCreate();\r
134 }\r
135 \r
136 LRESULT CMainMDIFrame::OnNotify(WPARAM wParam, LPARAM lParam)\r
137 {\r
138         // Notification from our dropdown button is recieved if Comctl32.dll version\r
139         // is 4.70 or later (IE v3 required).\r
140     switch(((LPNMHDR)lParam)->code)\r
141         {\r
142                 //Menu for dropdown toolbar button\r
143                 case TBN_DROPDOWN:\r
144                 {\r
145                         if (((LPNMHDR)lParam)->hwndFrom == GetToolBar())\r
146                                 OnFileNew();\r
147                 }\r
148                 break;\r
149 \r
150         } //switch LPNMHDR\r
151 \r
152         return CMDIFrame::OnNotify(wParam, lParam);\r
153 }\r
154 \r
155 void CMainMDIFrame::SetupToolBar()\r
156 {\r
157         // Define the resource IDs for the toolbar\r
158         AddToolBarButton( IDM_FILE_NEW   );\r
159         AddToolBarButton( IDM_FILE_OPEN,  FALSE );\r
160         AddToolBarButton( IDM_FILE_SAVE,  FALSE );\r
161         \r
162         AddToolBarButton( 0 );  // Separator\r
163         AddToolBarButton( IDM_EDIT_CUT,   FALSE );\r
164         AddToolBarButton( IDM_EDIT_COPY,  FALSE );\r
165         AddToolBarButton( IDM_EDIT_PASTE, FALSE );\r
166         \r
167         AddToolBarButton( 0 );  // Separator\r
168         AddToolBarButton( IDM_FILE_PRINT, FALSE );\r
169         \r
170         AddToolBarButton( 0 );  // Separator\r
171         AddToolBarButton( IDM_HELP_ABOUT );\r
172 \r
173         // Use larger buttons with seperate imagelists for normal, hot and disabled buttons.\r
174         SetToolBarImages(RGB(192,192,192), IDB_TOOLBAR_NORM, IDB_TOOLBAR_HOT, IDB_TOOLBAR_DIS);\r
175 \r
176         // Add some extra icons for menu items\r
177         AddMenuIcon(IDM_FILE_NEWVIEW, ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_VIEW)));\r
178         AddMenuIcon(IDM_FILE_NEWRECT, ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_RECT)));\r
179         AddMenuIcon(IDM_FILE_NEWMAX,  ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_MAX)));\r
180         AddMenuIcon(IDM_FILE_NEWTEXT, ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_TEXT)));\r
181         AddMenuIcon(IDM_FILE_NEWLIST, ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_FILES)));\r
182         AddMenuIcon(IDM_FILE_NEWTREE, ::LoadIcon(GetApp()->GetInstanceHandle(), MAKEINTRESOURCE(IDI_CLASSES)));\r
183 \r
184         // Configure the "New" toolbar button to bring up a menu\r
185         // Setting this style requires comctl32.dll version 4.72 or later\r
186         if (GetComCtlVersion() >= 472)\r
187         {\r
188                 GetToolBar().SetButtonStyle(IDM_FILE_NEW, BTNS_WHOLEDROPDOWN);\r
189         }\r
190 }\r
191 \r
192 LRESULT CMainMDIFrame::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
193 {\r
194 //      switch (uMsg)\r
195 //      {\r
196 //               Add case statements for each messages to be handled here\r
197 //      }\r
198 \r
199 //      pass unhandled messages on for default processing\r
200         return WndProcDefault(uMsg, wParam, lParam);\r
201 }\r
202 \r

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