ViewCtrlBar.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
源码类别:

图形图象

开发平台:

Visual C++

  1. // ViewCtrlBar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "includeviewctrlbar.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CViewCtrlBar
  12. IMPLEMENT_DYNCREATE(CViewCtrlBar, CCJControlBar)
  13. CViewCtrlBar::CViewCtrlBar()
  14. {
  15. m_pView = NULL;
  16. }
  17. CViewCtrlBar::~CViewCtrlBar()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CViewCtrlBar, CCJControlBar)
  21. //{{AFX_MSG_MAP(CViewCtrlBar)
  22. ON_WM_WINDOWPOSCHANGED()
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CViewCtrlBar message handlers
  27. bool CViewCtrlBar::AddView(CRuntimeClass *pViewClass, DWORD dwStyle , CCreateContext *pContext )
  28. {
  29. #ifdef _DEBUG
  30. ASSERT_VALID(this);
  31. ASSERT(pViewClass != NULL);
  32. ASSERT(pViewClass->IsDerivedFrom(RUNTIME_CLASS(CWnd)));
  33. ASSERT(AfxIsValidAddress(pViewClass, sizeof(CRuntimeClass), FALSE));
  34. #endif
  35. CCreateContext context;
  36. if (pContext == NULL)
  37. pContext = &context;
  38. CWnd* pWnd;
  39. TRY
  40. {
  41. pWnd = (CWnd*)pViewClass->CreateObject();
  42. if (pWnd == NULL)
  43. AfxThrowMemoryException();
  44. }
  45. CATCH_ALL(e)
  46. {
  47. TRACE0("Out of memory creating a view.n");
  48. // Note: DELETE_EXCEPTION(e) not required
  49. return false;
  50. }
  51. END_CATCH_ALL
  52.     ASSERT_KINDOF(CWnd, pWnd);
  53. ASSERT(pWnd->m_hWnd == NULL);       // not yet created
  54. CRect rect;
  55. // Create with the right size and position
  56. if (!pWnd->Create(NULL, NULL, dwStyle, rect, this, 0, pContext))
  57. {
  58. TRACE0("Warning: couldn't create client pane for view.n");
  59. // pWnd will be cleaned up by PostNcDestroy
  60. return false;
  61. }
  62. if ( m_pView )
  63. delete m_pView;
  64. m_pView = (CView *)pWnd;
  65. return true;
  66. }
  67. void CViewCtrlBar::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
  68. {
  69. if ( m_pView )
  70. {
  71. if (IsFloating())
  72. m_pView->MoveWindow( 5, 5, lpwndpos->cx-10, lpwndpos->cy-7 );
  73. else if (IsHorzDocked()) 
  74. m_pView->MoveWindow( 15 , 4 , lpwndpos->cx-25, lpwndpos->cy-17 );
  75. else
  76. m_pView->MoveWindow( 4 , 16 , lpwndpos->cx-14, lpwndpos->cy-28 );
  77. }
  78. CCJControlBar::OnWindowPosChanged(lpwndpos);
  79. }
  80. CView * CViewCtrlBar::GetView()
  81. {
  82. return m_pView;
  83. }