--- /dev/null
+////////////////////////////////////////////////////\r
+// Mainfrm.cpp\r
+\r
+#include "stdafx.h"\r
+#include "resource.h"\r
+#include "FormApp.h"\r
+#include "mainfrm.h"\r
+\r
+\r
+// A global function to provide access to the CFormDoc class\r
+CFormDoc& GetDoc()\r
+{\r
+ return GetSdiApp().GetMainFrame().GetDoc();\r
+}\r
+\r
+\r
+// Definitions for the CMainFrame class\r
+CMainFrame::CMainFrame() : m_SdiView(IDD_DIALOG1)\r
+{\r
+ // Constructor for CMainFrame. Its called after CFrame's constructor\r
+\r
+ //Set m_SdiView as the view window of the frame\r
+ SetView(m_SdiView);\r
+\r
+ // Set the registry key name, and load the initial window position\r
+ // Use a registry key name like "CompanyName\\Application"\r
+ LoadRegistrySettings(_T("Win32++\\SdiDocViewForm"));\r
+}\r
+\r
+CMainFrame::~CMainFrame()\r
+{\r
+ // Destructor for CMainFrame.\r
+}\r
+\r
+BOOL CMainFrame::LoadRegistrySettings(LPCTSTR szKeyName)\r
+{\r
+ CFrame::LoadRegistrySettings(szKeyName);\r
+ GetDoc().LoadDocRegistry(GetRegistryKeyName().c_str());\r
+\r
+ return TRUE;\r
+}\r
+\r
+void CMainFrame::OnMenuUpdate(UINT nID)\r
+{\r
+ // Update the check state of the various menu items\r
+ switch (nID) \r
+ {\r
+ case ID_CHECK_A:\r
+ OnUpdateCheckA(nID);\r
+ break;\r
+ case ID_CHECK_B:\r
+ OnUpdateCheckB(nID);\r
+ break;\r
+ case ID_CHECK_C:\r
+ OnUpdateCheckC(nID);\r
+ break;\r
+ }\r
+\r
+ if ((nID >= ID_RADIO_A) && (nID <= ID_RADIO_C)) \r
+ OnUpdateRangeOfIds_Radio(nID);\r
+}\r
+\r
+BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)\r
+{\r
+ UNREFERENCED_PARAMETER(lParam);\r
+ WORD wpLo = LOWORD(wParam);\r
+ \r
+ switch(LOWORD(wParam))\r
+ {\r
+ case ID_CHECK_A:\r
+ m_SdiView.OnCheckA();\r
+ return TRUE;\r
+ case ID_CHECK_B:\r
+ m_SdiView.OnCheckB();\r
+ return TRUE;\r
+ case ID_CHECK_C:\r
+ m_SdiView.OnCheckC();\r
+ return TRUE;\r
+\r
+ case ID_RADIO_A:\r
+ case ID_RADIO_B:\r
+ case ID_RADIO_C:\r
+ m_SdiView.OnRangeOfIds_Radio(wpLo - ID_RADIO_A);\r
+ return TRUE;\r
+\r
+ case IDW_VIEW_STATUSBAR:\r
+ OnViewStatusBar();\r
+ return TRUE;\r
+ case IDW_VIEW_TOOLBAR:\r
+ OnViewToolBar();\r
+ return TRUE;\r
+ case IDM_FILE_EXIT:\r
+ // End the application\r
+ ::PostMessage(m_hWnd, WM_CLOSE, 0, 0);\r
+ return TRUE;\r
+\r
+ case IDM_HELP_ABOUT:\r
+ // Display the help dialog\r
+ OnHelp();\r
+ return TRUE;\r
+ }\r
+\r
+ return FALSE;\r
+} \r
+\r
+void CMainFrame::OnCreate()\r
+{\r
+ // OnCreate controls the way the frame is created.\r
+ // Overriding CFrame::Oncreate is optional.\r
+ // The default for the following variables is TRUE\r
+\r
+ // m_bShowIndicatorStatus = FALSE; // Don't show statusbar indicators\r
+ // m_bShowMenuStatus = FALSE; // Don't show toolbar or menu status\r
+ // m_bUseReBar = FALSE; // Don't use rebars\r
+ // m_bUseThemes = FALSE; // Don't use themes\r
+ // m_bUseToolBar = FALSE; // Don't use a toolbar\r
+ // m_bUseCustomDraw = FALSE; // Don't use custom draw for menu items\r
+\r
+ // call the base class function\r
+ CFrame::OnCreate();\r
+}\r
+\r
+void CMainFrame::OnInitialUpdate()\r
+{\r
+ // The frame is now created.\r
+ // Place any additional startup code here.\r
+ \r
+}\r
+\r
+void CMainFrame::PreCreate(CREATESTRUCT& cs)\r
+{\r
+ CFrame::PreCreate(cs);\r
+// cs.cx = 500;\r
+// cs.cy = 420;\r
+}\r
+\r
+BOOL CMainFrame::SaveRegistrySettings()\r
+{\r
+ CFrame::SaveRegistrySettings();\r
+ GetDoc().SaveDocRegistry(GetRegistryKeyName().c_str());\r
+\r
+ return TRUE;\r
+}\r
+\r
+void CMainFrame::SetupToolBar()\r
+{\r
+ // Set the Resource IDs for the toolbar buttons\r
+ AddToolBarButton( IDM_FILE_NEW );\r
+ AddToolBarButton( IDM_FILE_OPEN );\r
+ AddToolBarButton( IDM_FILE_SAVE );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_EDIT_CUT );\r
+ AddToolBarButton( IDM_EDIT_COPY );\r
+ AddToolBarButton( IDM_EDIT_PASTE );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_FILE_PRINT );\r
+ AddToolBarButton( 0 ); // Separator\r
+ AddToolBarButton( IDM_HELP_ABOUT );\r
+}\r
+\r
+LRESULT CMainFrame::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+// switch (uMsg)\r
+// {\r
+// // Suppress resizing\r
+// case WM_SIZING:\r
+// {\r
+// LPRECT pRect = (LPRECT)lParam;\r
+// pRect->right = pRect->left + 500;\r
+// pRect->bottom = pRect->top + 420;\r
+// }\r
+// return TRUE; \r
+// } \r
+\r
+ // pass unhandled messages on for default processing\r
+ return WndProcDefault(uMsg, wParam, lParam);\r
+}\r
+\r
+void CMainFrame::OnUpdateCheckA(UINT nID)\r
+{\r
+ BOOL bCheck = GetDoc().GetCheckA();\r
+ GetFrameMenu().CheckMenuItem(nID, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+}\r
+\r
+void CMainFrame::OnUpdateCheckB(UINT nID)\r
+{\r
+ BOOL bCheck = GetDoc().GetCheckB();\r
+ GetFrameMenu().CheckMenuItem(nID, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+}\r
+\r
+void CMainFrame::OnUpdateCheckC(UINT nID)\r
+{\r
+ BOOL bCheck = GetDoc().GetCheckC();\r
+ GetFrameMenu().CheckMenuItem(nID, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
+}\r
+\r
+void CMainFrame::OnUpdateRangeOfIds_Radio(UINT nID)\r
+{\r
+ UINT adjId = nID - ID_RADIO_A;\r
+ UINT curRadio = GetDoc().GetRadio();\r
+ BOOL bCheck = (curRadio == adjId);\r
+ int nFileItem = GetMenuItemPos(GetFrameMenu(), _T("Select"));\r
+ CMenu* pRadioMenu = GetFrameMenu().GetSubMenu(nFileItem);\r
+ if (bCheck) \r
+ pRadioMenu->CheckMenuRadioItem(ID_RADIO_A, ID_RADIO_C, nID, 0);\r
+}\r