MAINFRM.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // mainfrm.cpp : implementation of the CMainFrame class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "propdlg.h"
  14. #include "colorpge.h"
  15. #include "stylepge.h"
  16. #include "shapeobj.h"
  17. #include "preview.h"
  18. #include "propsht.h"
  19. #include "propsht2.h"
  20. #include "minifrm.h"
  21. #include "resource.h"
  22. #include "mainfrm.h"
  23. #include "shapedoc.h"
  24. #include "shapesvw.h"
  25. #ifdef _DEBUG
  26. #undef THIS_FILE
  27. static char BASED_CODE THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMainFrame
  31. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  32. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  33. //{{AFX_MSG_MAP(CMainFrame)
  34. ON_WM_CREATE()
  35. ON_COMMAND(ID_MINI_FRAME_PROPERTY_SHEET, OnMiniFramePropertySheet)
  36. ON_UPDATE_COMMAND_UI(ID_MINI_FRAME_PROPERTY_SHEET, OnUpdateMiniFramePropertySheet)
  37. //}}AFX_MSG_MAP
  38. END_MESSAGE_MAP()
  39. /////////////////////////////////////////////////////////////////////////////
  40. // arrays of IDs used to initialize control bars
  41. // toolbar buttons - IDs are command buttons
  42. static UINT BASED_CODE buttons[] =
  43. {
  44. // same order as in the bitmap 'toolbar.bmp'
  45. ID_FILE_NEW,
  46. ID_FILE_OPEN,
  47. ID_FILE_SAVE,
  48. ID_SEPARATOR,
  49. ID_EDIT_CUT,
  50. ID_EDIT_COPY,
  51. ID_EDIT_PASTE,
  52. ID_SEPARATOR,
  53. ID_FILE_PRINT,
  54. ID_APP_ABOUT,
  55. };
  56. static UINT BASED_CODE indicators[] =
  57. {
  58. ID_SEPARATOR,           // status line indicator
  59. ID_INDICATOR_CAPS,
  60. ID_INDICATOR_NUM,
  61. ID_INDICATOR_SCRL,
  62. };
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CMainFrame construction/destruction
  65. CMainFrame::CMainFrame()
  66. {
  67. m_pShapePropFrame = NULL;
  68. }
  69. CMainFrame::~CMainFrame()
  70. {
  71. }
  72. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  73. {
  74. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  75. return -1;
  76. if (!m_wndToolBar.Create(this) ||
  77. !m_wndToolBar.LoadBitmap(IDR_MAINFRAME) ||
  78. !m_wndToolBar.SetButtons(buttons,
  79.   sizeof(buttons)/sizeof(UINT)))
  80. {
  81. TRACE0("Failed to create toolbarn");
  82. return -1;      // fail to create
  83. }
  84. if (!m_wndStatusBar.Create(this) ||
  85. !m_wndStatusBar.SetIndicators(indicators,
  86.   sizeof(indicators)/sizeof(UINT)))
  87. {
  88. TRACE0("Failed to create status barn");
  89. return -1;      // fail to create
  90. }
  91. return 0;
  92. }
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CMainFrame diagnostics
  95. #ifdef _DEBUG
  96. void CMainFrame::AssertValid() const
  97. {
  98. CMDIFrameWnd::AssertValid();
  99. }
  100. void CMainFrame::Dump(CDumpContext& dc) const
  101. {
  102. CMDIFrameWnd::Dump(dc);
  103. }
  104. #endif //_DEBUG
  105. /////////////////////////////////////////////////////////////////////////////
  106. // CMainFrame message handlers
  107. void CMainFrame::OnMiniFramePropertySheet()
  108. {
  109. // If mini frame does not already exist, create a new one.
  110. // Otherwise, unhide it
  111. if (m_pShapePropFrame == NULL)
  112. {
  113. m_pShapePropFrame = new CShapePropSheetFrame;
  114. CRect rect(0, 0, 0, 0);
  115. CString strTitle;
  116. strTitle.LoadString(IDS_OBJECT_PROPERTIES);
  117. if (!m_pShapePropFrame->Create(NULL, strTitle,
  118. WS_POPUP | WS_CAPTION | WS_SYSMENU, rect, this))
  119. {
  120. m_pShapePropFrame = NULL;
  121. return;
  122. }
  123. m_pShapePropFrame->CenterWindow();
  124. }
  125. // Before unhiding the modeless property sheet, update its
  126. // settings to reflect the currently selected shape.
  127. CShapesView* pView =
  128. STATIC_DOWNCAST(CShapesView, MDIGetActive()->GetActiveView());
  129. ASSERT_VALID(pView);
  130. if (pView->m_pShapeSelected != NULL)
  131. {
  132.    m_pShapePropFrame->m_pModelessShapePropSheet->
  133.    SetSheetPropsFromShape(pView->m_pShapeSelected);
  134. }
  135. if (m_pShapePropFrame != NULL && !m_pShapePropFrame->IsWindowVisible())
  136. m_pShapePropFrame->ShowWindow(SW_SHOW);
  137. }
  138. void CMainFrame::OnUpdateMiniFramePropertySheet(CCmdUI* pCmdUI)
  139. {
  140. pCmdUI->Enable(m_pShapePropFrame == NULL
  141. || !m_pShapePropFrame->IsWindowVisible());
  142. }
  143. void CMainFrame::HideModelessPropSheet()
  144. {
  145. if (m_pShapePropFrame != NULL)
  146. m_pShapePropFrame->ShowWindow(SW_HIDE);
  147. }