ShellTreeView.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:3k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // ShellTreeView.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "WinExplorer.h"
  5. #include "ShellTreeView.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CShellTreeView
  13. IMPLEMENT_DYNCREATE(CShellTreeView, CXTShellTreeView)
  14. CShellTreeView::CShellTreeView()
  15. {
  16. }
  17. CShellTreeView::~CShellTreeView()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CShellTreeView, CXTShellTreeView)
  21. //{{AFX_MSG_MAP(CShellTreeView)
  22.   ON_WM_NCCALCSIZE()
  23.   ON_WM_NCPAINT()
  24. //}}AFX_MSG_MAP
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CShellTreeView drawing
  28. void CShellTreeView::OnDraw(CDC* /*pDC*/)
  29. {
  30. }
  31. void CShellTreeView::OnInitialUpdate()
  32. {
  33. CXTShellTreeView::OnInitialUpdate();
  34. }
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CShellTreeView diagnostics
  37. #ifdef _DEBUG
  38. void CShellTreeView::AssertValid() const
  39. {
  40. CXTShellTreeView::AssertValid();
  41. }
  42. void CShellTreeView::Dump(CDumpContext& dc) const
  43. {
  44. CXTShellTreeView::Dump(dc);
  45. }
  46. #endif //_DEBUG
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CShellTreeView message handlers
  49. void CShellTreeView::SelectParentItem()
  50. {
  51.     if (::IsWindow(GetTreeCtrl().m_hWnd))
  52.     {
  53.         HTREEITEM htItem = GetTreeCtrl().GetSelectedItem();
  54.         if (htItem != GetTreeCtrl().GetRootItem())
  55.         {
  56.             GetTreeCtrl().SelectItem(GetTreeCtrl().GetParentItem(htItem));
  57.             GetTreeCtrl().SetFocus();
  58.         }
  59.     }
  60. }
  61. BOOL CShellTreeView::PreCreateWindow(CREATESTRUCT& cs) 
  62. {
  63. if (!CXTShellTreeView::PreCreateWindow(cs))
  64. return FALSE;
  65. cs.dwExStyle |= WS_EX_STATICEDGE;
  66. return TRUE;
  67. }
  68. #define CY_CAPTION 20
  69. void CShellTreeView::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
  70. {
  71. lpncsp->rgrc[0].top += CY_CAPTION + 1;
  72. CXTShellTreeView::OnNcCalcSize(bCalcValidRects, lpncsp);
  73. }
  74. void CShellTreeView::OnNcPaint() 
  75. {
  76. // code block: paint scrollbars first.
  77. {
  78. Default();
  79. }
  80. CWindowDC dc(this);
  81. CXTPWindowRect rWindow(this);
  82. rWindow.OffsetRect(-rWindow.TopLeft());
  83. dc.Draw3dRect(&rWindow, GetXtremeColor(COLOR_3DSHADOW), GetXtremeColor(COLOR_3DHIGHLIGHT));
  84. // draw psudo caption.
  85. rWindow.DeflateRect(1, 1);
  86. rWindow.bottom = rWindow.top + CY_CAPTION;
  87. dc.FillSolidRect(rWindow.left, rWindow.bottom, rWindow.Width(), 1, GetXtremeColor(COLOR_WINDOW));
  88. CXTPBufferDC memDC(dc, rWindow);
  89. memDC.FillSolidRect(rWindow, GetXtremeColor(COLOR_3DFACE));
  90. memDC.Draw3dRect(&rWindow, GetXtremeColor(COLOR_3DHIGHLIGHT), GetXtremeColor(COLOR_3DSHADOW));
  91. CXTPFontDC fontDC(&memDC, &XTAuxData().font);
  92. rWindow.DeflateRect(4,2);
  93. memDC.SetBkMode(TRANSPARENT);
  94. memDC.DrawText(_T("Folders"), &rWindow, DT_SINGLELINE | DT_VCENTER | DT_END_ELLIPSIS);
  95. }