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

界面编程

开发平台:

Visual C++

  1. // ChildFrm.cpp : implementation of the CChildFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "MDI.h"
  5. #include "ChildFrm.h"
  6. #include "MainFrm.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CChildFrame
  14. IMPLEMENT_DYNCREATE( CChildFrame, CMDIChildWnd )
  15. BEGIN_MESSAGE_MAP( CChildFrame, CMDIChildWnd )
  16. //{{AFX_MSG_MAP(CChildFrame)
  17. ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
  18. ON_WM_SETFOCUS()
  19. ON_WM_CREATE()
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CChildFrame construction/destruction
  24. CChildFrame::CChildFrame()
  25. {
  26. // TODO: add member initialization code here
  27. m_hChildFrameIcon = NULL;
  28. HINSTANCE hInstResource =
  29. AfxFindResourceHandle(
  30. MAKEINTRESOURCE(IDR_MDITYPE),
  31. RT_GROUP_ICON
  32. );
  33. ASSERT( hInstResource != NULL );
  34. if( hInstResource != NULL )
  35. {
  36. m_hChildFrameIcon =
  37. (HICON)::LoadImage(
  38. hInstResource,
  39. MAKEINTRESOURCE(IDR_MDITYPE),
  40. IMAGE_ICON,
  41. 16,
  42. 16,
  43. 0
  44. );
  45. ASSERT( m_hChildFrameIcon != NULL );
  46. }
  47. }
  48. CChildFrame::~CChildFrame()
  49. {
  50. if( m_hChildFrameIcon != NULL )
  51. {
  52. ::DestroyIcon( m_hChildFrameIcon );
  53. }
  54. }
  55. BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
  56. {
  57. if( ! CExtNCW < CMDIChildWnd > :: PreCreateWindow( cs ) )
  58. return FALSE;
  59. cs.style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
  60. cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
  61. cs.lpszClass = AfxRegisterWndClass( 0 );
  62. return TRUE;
  63. }
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CChildFrame diagnostics
  66. #ifdef _DEBUG
  67. void CChildFrame::AssertValid() const
  68. {
  69. CExtNCW < CMDIChildWnd > :: AssertValid();
  70. }
  71. void CChildFrame::Dump(CDumpContext& dc) const
  72. {
  73. CExtNCW < CMDIChildWnd > :: Dump(dc);
  74. }
  75. #endif //_DEBUG
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CChildFrame message handlers
  78. void CChildFrame::OnFileClose() 
  79. {
  80. // To close the frame, just send a WM_CLOSE, which is the equivalent
  81. // choosing close from the system menu.
  82. SendMessage(WM_CLOSE);
  83. }
  84. int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  85. {
  86. if( CExtNCW < CMDIChildWnd > :: OnCreate( lpCreateStruct ) == -1 )
  87. return -1;
  88. ASSERT( m_hChildFrameIcon != NULL );
  89. SetIcon( m_hChildFrameIcon, FALSE );
  90. SetIcon( m_hChildFrameIcon, TRUE );
  91. // create a view to occupy the client area of the frame
  92. if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, 
  93. CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
  94. {
  95. TRACE0("Failed to create view windown");
  96. return -1;
  97. }
  98. return 0;
  99. }
  100. void CChildFrame::OnSetFocus(CWnd* pOldWnd) 
  101. {
  102. CExtNCW < CMDIChildWnd > :: OnSetFocus(pOldWnd);
  103. if( m_wndView.GetSafeHwnd() != NULL )
  104. m_wndView.SetFocus();
  105. }
  106. BOOL CChildFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  107. {
  108. // let the view have first crack at the command
  109. if( m_wndView.GetSafeHwnd() != NULL
  110. && m_wndView.OnCmdMsg( nID, nCode, pExtra, pHandlerInfo )
  111. )
  112. return TRUE;
  113. // otherwise, do default handling
  114. return CExtNCW < CMDIChildWnd > :: OnCmdMsg( nID, nCode, pExtra, pHandlerInfo );
  115. }
  116. BOOL CChildFrame::PreTranslateMessage(MSG* pMsg) 
  117. {
  118. CMainFrame * pMainFrame =
  119. DYNAMIC_DOWNCAST(
  120. CMainFrame,
  121. ::AfxGetMainWnd()
  122. );
  123. ASSERT_VALID( pMainFrame );
  124. if( pMainFrame->m_wndMenuBar.TranslateMainFrameMessage(pMsg) )
  125. return TRUE;
  126. return CExtNCW < CMDIChildWnd > :: PreTranslateMessage(pMsg);
  127. }