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 "FullScreenState.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_CREATE()
  19. ON_WM_ERASEBKGND()
  20. ON_WM_PAINT()
  21. ON_WM_SETCURSOR()
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CChildFrame construction/destruction
  26. CChildFrame::CChildFrame()
  27. {
  28. // TODO: add member initialization code here
  29. m_hChildFrameIcon = NULL;
  30. HINSTANCE hInstResource =
  31. AfxFindResourceHandle(
  32. MAKEINTRESOURCE(IDR_MDITYPE),
  33. RT_GROUP_ICON
  34. );
  35. ASSERT( hInstResource != NULL );
  36. if( hInstResource != NULL )
  37. {
  38. m_hChildFrameIcon =
  39. (HICON)::LoadImage(
  40. hInstResource,
  41. MAKEINTRESOURCE(IDR_MDITYPE),
  42. IMAGE_ICON,
  43. 16,
  44. 16,
  45. 0
  46. );
  47. ASSERT( m_hChildFrameIcon != NULL );
  48. }
  49. }
  50. CChildFrame::~CChildFrame()
  51. {
  52. if( m_hChildFrameIcon != NULL )
  53. {
  54. ::DestroyIcon( m_hChildFrameIcon );
  55. }
  56. }
  57. BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
  58. {
  59. // TODO: Modify the Window class or styles here by modifying
  60. //  the CREATESTRUCT cs
  61. if( ! CExtNCW < CMDIChildWnd > :: PreCreateWindow( cs ) )
  62. return FALSE;
  63. cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
  64. cs.lpszClass = AfxRegisterWndClass(0);
  65. return TRUE;
  66. }
  67. void CChildFrame::ActivateFrame(int nCmdShow)
  68. {
  69. // nCmdShow = SW_SHOWMAXIMIZED;
  70. CExtNCW < CMDIChildWnd > :: ActivateFrame( nCmdShow );
  71. }
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CChildFrame diagnostics
  74. #ifdef _DEBUG
  75. void CChildFrame::AssertValid() const
  76. {
  77. CExtNCW < CMDIChildWnd > :: AssertValid();
  78. }
  79. void CChildFrame::Dump(CDumpContext& dc) const
  80. {
  81. CExtNCW < CMDIChildWnd > :: Dump( dc );
  82. }
  83. #endif //_DEBUG
  84. /////////////////////////////////////////////////////////////////////////////
  85. // CChildFrame message handlers
  86. void CChildFrame::OnFileClose() 
  87. {
  88. // To close the frame, just send a WM_CLOSE, which is the equivalent
  89. // choosing close from the system menu.
  90. SendMessage(WM_CLOSE);
  91. }
  92. int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  93. {
  94. if( CExtNCW < CMDIChildWnd > :: OnCreate( lpCreateStruct ) == -1 )
  95. return -1;
  96. ASSERT( m_hChildFrameIcon != NULL );
  97. SetIcon( m_hChildFrameIcon, FALSE );
  98. SetIcon( m_hChildFrameIcon, TRUE );
  99. return 0;
  100. }
  101. BOOL CChildFrame::PreTranslateMessage(MSG* pMsg) 
  102. {
  103. CMainFrame * pMainFrame =
  104. DYNAMIC_DOWNCAST(
  105. CMainFrame,
  106. ::AfxGetMainWnd()
  107. );
  108. ASSERT_VALID( pMainFrame );
  109. if( pMainFrame->m_wndMenuBar.TranslateMainFrameMessage(pMsg) )
  110. return TRUE;
  111. return CExtNCW < CMDIChildWnd > :: PreTranslateMessage( pMsg );
  112. }
  113. BOOL CChildFrame::OnEraseBkgnd(CDC* pDC) 
  114. {
  115. pDC;
  116. return TRUE;
  117. }
  118. void CChildFrame::OnPaint() 
  119. {
  120. CPaintDC dc( this );
  121. if( ! g_PaintManager->PaintDocumentClientAreaBkgnd( dc, this ) )
  122. {
  123. CRect rcClipBox;
  124. dc.GetClipBox( &rcClipBox );
  125. dc.FillSolidRect(
  126. &rcClipBox,
  127. g_PaintManager->GetColor( COLOR_3DFACE, this )
  128. );
  129. }
  130. }
  131. BOOL CChildFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
  132. {
  133. if( nHitTest == HTCLIENT )
  134. {
  135. SetCursor( ::LoadCursor(NULL,IDC_ARROW) );
  136. return TRUE;
  137. }
  138. return CExtNCW < CMDIChildWnd > :: OnSetCursor( pWnd, nHitTest, message );
  139. }