1 ////////////////////////////////////////////////////
\r
2 // MainMDIfrm.cpp - definitions for the CMainMDIFrame class
\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
15 CMainMDIFrame::CMainMDIFrame()
\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
22 CMainMDIFrame::~CMainMDIFrame()
\r
26 void CMainMDIFrame::OnInitialUpdate()
\r
28 //The frame is now created.
\r
29 //Place any additional startup code here.
\r
32 void CMainMDIFrame::OnFileNew()
\r
34 // Creates the popup menu when the "New" toolbar button is pressed
\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
42 tpm.cbSize = sizeof(TPMPARAMS);
\r
45 // Load the popup menu
\r
46 CMenu TopMenu(IDM_NEWMENU);
\r
47 CMenu* pPopupMenu = TopMenu.GetSubMenu(0);
\r
49 // Start the popup menu
\r
50 pPopupMenu->TrackPopupMenuEx(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, rc.left, rc.bottom, this, &tpm);
\r
53 BOOL CMainMDIFrame::OnCommand(WPARAM wParam, LPARAM lParam)
\r
55 switch (LOWORD(wParam))
\r
58 // For ComCtl versions 4.71 and older
\r
61 case IDM_FILE_NEWVIEW:
\r
62 AddMDIChild(new CMDIChildSimple); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
64 case IDM_FILE_NEWRECT:
\r
65 AddMDIChild(new CMDIChildRect); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
67 case IDM_FILE_NEWTEXT:
\r
68 AddMDIChild(new CMDIChildText); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
70 case IDM_FILE_NEWMAX:
\r
71 AddMDIChild(new CMDIChildMax); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
73 case IDM_FILE_NEWTREE:
\r
74 AddMDIChild(new CMDIChildTreeView); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
76 case IDM_FILE_NEWLIST:
\r
77 AddMDIChild(new CMDIChildListView); // CMDIFrame::RemoveMDIChild deletes this pointer
\r
79 case IDM_FILE_CLOSE: // Close the active MDI window
\r
80 GetActiveMDIChild()->SendMessage(WM_CLOSE, 0L, 0L);
\r
83 SendMessage(WM_CLOSE, 0L, 0L);
\r
85 case IDW_VIEW_STATUSBAR:
\r
89 case IDW_VIEW_TOOLBAR:
\r
93 case IDW_MDI_ARRANGE:
\r
96 case IDW_MDI_CASCADE:
\r
99 case IDW_MDI_CLOSEALL:
\r
100 RemoveAllMDIChildren();
\r
105 default: // Pass to active child...
\r
107 if (GetActiveMDIChild())
\r
108 GetActiveMDIChild()->SendMessage(WM_COMMAND, wParam, lParam);
\r
111 case IDM_HELP_ABOUT:
\r
119 void CMainMDIFrame::OnCreate()
\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
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
132 // call the base class function
\r
133 CMDIFrame::OnCreate();
\r
136 LRESULT CMainMDIFrame::OnNotify(WPARAM wParam, LPARAM lParam)
\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
142 //Menu for dropdown toolbar button
\r
145 if (((LPNMHDR)lParam)->hwndFrom == GetToolBar())
\r
152 return CMDIFrame::OnNotify(wParam, lParam);
\r
155 void CMainMDIFrame::SetupToolBar()
\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
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
167 AddToolBarButton( 0 ); // Separator
\r
168 AddToolBarButton( IDM_FILE_PRINT, FALSE );
\r
170 AddToolBarButton( 0 ); // Separator
\r
171 AddToolBarButton( IDM_HELP_ABOUT );
\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
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
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
188 GetToolBar().SetButtonStyle(IDM_FILE_NEW, BTNS_WHOLEDROPDOWN);
\r
192 LRESULT CMainMDIFrame::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
\r
196 // Add case statements for each messages to be handled here
\r
199 // pass unhandled messages on for default processing
\r
200 return WndProcDefault(uMsg, wParam, lParam);
\r