MDI.cpp
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:4k
源码类别:

界面编程

开发平台:

Visual C++

  1. // MDI.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "MDI.h"
  5. #include "MainFrm.h"
  6. #include "ChildFrm.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CMDIApp
  14. BEGIN_MESSAGE_MAP(CMDIApp, CWinApp)
  15. //{{AFX_MSG_MAP(CMDIApp)
  16. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  17. // NOTE - the ClassWizard will add and remove mapping macros here.
  18. //    DO NOT EDIT what you see in these blocks of generated code!
  19. ON_COMMAND(ID_FILE_NEW, OnFileNew)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CMDIApp construction
  24. CMDIApp::CMDIApp()
  25. {
  26. // TODO: add construction code here,
  27. // Place all significant initialization in InitInstance
  28. }
  29. /////////////////////////////////////////////////////////////////////////////
  30. // The one and only CMDIApp object
  31. CMDIApp theApp;
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CMDIApp initialization
  34. BOOL CMDIApp::InitInstance()
  35. {
  36. InitCommonControls();
  37. if( ! ::AfxOleInit() )
  38. {
  39. ASSERT( FALSE );
  40. return FALSE;
  41. }
  42. AfxEnableControlContainer();
  43. // Standard initialization
  44. // If you are not using these features and wish to reduce the size
  45. //  of your final executable, you should remove from the following
  46. //  the specific initialization routines you do not need.
  47. #if _MFC_VER < 0x700
  48. #ifdef _AFXDLL
  49. Enable3dControls(); // Call this when using MFC in a shared DLL
  50. #else
  51. Enable3dControlsStatic(); // Call this when linking to MFC statically
  52. #endif
  53. #endif
  54. // Change the registry key under which our settings are stored.
  55. // TODO: You should modify this string to be something appropriate
  56. // such as the name of your company or organization.
  57. SetRegistryKey( _T("Foss") );
  58. // To create the main window, this code creates a new frame window
  59. // object and then sets it as the application's main window object.
  60. CMDIFrameWnd* pFrame = new CMainFrame;
  61. m_pMainWnd = pFrame;
  62. // create main MDI frame window
  63. if (!pFrame->LoadFrame(IDR_MAINFRAME))
  64. return FALSE;
  65. // try to load shared MDI menus and accelerator table
  66. //TODO: add additional member variables and load calls for
  67. // additional menu types your application may need. 
  68. HINSTANCE hInst = AfxGetResourceHandle();
  69. m_hMDIMenu  = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_MDITYPE));
  70. m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_MDITYPE));
  71. // The main window has been initialized, so show and update it.
  72. pFrame->ActivateFrame( m_nCmdShow ); // window placement persistence
  73. //  ::SetActiveWindow( NULL );
  74. //  pFrame->SetActiveWindow();
  75. return TRUE;
  76. }
  77. /////////////////////////////////////////////////////////////////////////////
  78. // CMDIApp message handlers
  79. int CMDIApp::ExitInstance() 
  80. {
  81. //TODO: handle additional resources you may have added
  82. if (m_hMDIMenu != NULL)
  83. FreeResource(m_hMDIMenu);
  84. if (m_hMDIAccel != NULL)
  85. FreeResource(m_hMDIAccel);
  86. return CWinApp::ExitInstance();
  87. }
  88. void CMDIApp::OnFileNew() 
  89. {
  90. CMainFrame * pFrame =
  91. STATIC_DOWNCAST(
  92. CMainFrame,
  93. m_pMainWnd
  94. );
  95. // create a new MDI child window
  96. pFrame->CreateNewChild(
  97. RUNTIME_CLASS(CChildFrame),
  98. IDR_MDITYPE,
  99. m_hMDIMenu,
  100. m_hMDIAccel
  101. );
  102. }
  103. // App command to run the dialog
  104. void CMDIApp::OnAppAbout()
  105. {
  106. #ifndef __EXT_MFC_NO_PROF_UIS_ABOUT_DIALOG
  107. VERIFY( ProfUISAbout() );
  108. #endif // #ifndef __EXT_MFC_NO_PROF_UIS_ABOUT_DIALOG
  109. }
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CMDIApp message handlers