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

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // You may use this source code, compile or redistribute it as part of your application 
  5. // for free. You cannot redistribute it as a part of a software development 
  6. // library without the agreement of the author. If the sources are 
  7. // distributed along with the application, you should leave the original 
  8. // copyright notes in the source code without any changes.
  9. // This code can be used WITHOUT ANY WARRANTIES at your own risk.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #include "stdafx.h"
  18. #include "UITreeView.h"
  19. #include "UIMessages.h"
  20. #ifdef _DEBUG
  21. #define new DEBUG_NEW
  22. #undef THIS_FILE
  23. static char THIS_FILE[] = __FILE__;
  24. #endif
  25. /////////////////////////////////////////////////////////////////////////////
  26. //
  27. IMPLEMENT_DYNAMIC(CUITreeView, CView)
  28. CUITreeView::CUITreeView(UINT nID) : m_nID(nID), m_pTreeCtrl(NULL)
  29. {
  30. m_Style = WS_VISIBLE | /*WS_BORDER |*/ WS_CHILD ;
  31. }
  32. CUITreeView::~CUITreeView()
  33. {
  34. delete m_pTreeCtrl;
  35. }
  36. CUITreeCtrl &CUITreeView::GetTreeCtrl()
  37. {
  38. ASSERT(m_pTreeCtrl);
  39. return *m_pTreeCtrl;
  40. }
  41. void CUITreeView::CreateTreeCtrl()
  42. {
  43. m_pTreeCtrl = new CUITreeCtrl;
  44. }
  45. void CUITreeView::SelectionChanged(const CRefresh &Refresh)
  46. {
  47. }
  48. BEGIN_MESSAGE_MAP(CUITreeView, CView)
  49. //{{AFX_MSG_MAP(CUITreeView)
  50. ON_WM_CREATE()
  51. ON_WM_SETFOCUS()
  52. ON_WM_SIZE()
  53. //}}AFX_MSG_MAP
  54. ON_MESSAGE(WM_APP_UPDATE_ALL_VIEWS, OnAppUpdateAllViews)
  55. END_MESSAGE_MAP()
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CUITreeView drawing
  58. void CUITreeView::OnDraw(CDC* pDC)
  59. {
  60. CDocument* pDoc = GetDocument();
  61. // TODO: add draw code here
  62. }
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CUITreeView diagnostics
  65. #ifdef _DEBUG
  66. void CUITreeView::AssertValid() const
  67. {
  68. CView::AssertValid();
  69. }
  70. void CUITreeView::Dump(CDumpContext& dc) const
  71. {
  72. CView::Dump(dc);
  73. }
  74. #endif //_DEBUG
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CUITreeView message handlers
  77. int CUITreeView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  78. {
  79. if (CView::OnCreate(lpCreateStruct) == -1)
  80. return -1;
  81. CreateTreeCtrl();
  82. if (GetTreeCtrl().Create(m_Style,CRect(0,0,0,0),this,m_nID) == -1)
  83. return -1;
  84. return 0;
  85. }
  86. BOOL CUITreeView::PreCreateWindow(CREATESTRUCT& cs) 
  87. {
  88. // TODO: Add your specialized code here and/or call the base class
  89. cs.lpszClass = AfxRegisterWndClass(
  90.   CS_DBLCLKS,                       
  91.   NULL,                             
  92.   NULL,                             
  93.   NULL); 
  94. ASSERT(cs.lpszClass);
  95. BOOL ret = CView::PreCreateWindow(cs);
  96. cs.dwExStyle |= WS_EX_CLIENTEDGE;
  97. return ret;
  98. }
  99. void CUITreeView::OnSetFocus(CWnd* pOldWnd) 
  100. {
  101. CView::OnSetFocus(pOldWnd);
  102. // TODO: Add your message handler code here
  103. GetTreeCtrl().SetFocus();
  104. }
  105. void CUITreeView::OnSize(UINT nType, int cx, int cy) 
  106. {
  107. CView::OnSize(nType, cx, cy);
  108. // TODO: Add your message handler code here
  109. if (GetTreeCtrl().GetSafeHwnd())
  110. GetTreeCtrl().MoveWindow(0,0,cx,cy);
  111. }
  112. LRESULT CUITreeView::OnAppUpdateAllViews( WPARAM wParam, LPARAM lParam )
  113. {
  114. ASSERT(wParam);
  115. // 加入判断文档是否与此视类连接的语句    阳光灿烂  2000-11-16
  116. CDocument * pDoc = GetDocument();
  117. if ( pDoc )
  118. if ( pDoc->IsKindOf( RUNTIME_CLASS( CDocument ) ) )
  119. pDoc->UpdateAllViews(NULL,wParam,(CObject*)lParam);
  120. return 1L;
  121. }
  122. void CUITreeView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
  123. {
  124. // TODO: Add your specialized code here and/or call the base class
  125. if (lHint == HINT_TREE_SEL_CHANGED)
  126. {
  127. ASSERT(pHint);
  128. ASSERT_KINDOF(CRefresh,pHint);
  129. CRefresh *pRefresh = (CRefresh*)pHint;
  130. SelectionChanged(*pRefresh);
  131. }
  132. }