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

对话框与窗口

开发平台:

Visual C++

  1. // TabTreeFile.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Resource.h"
  5. #include "TabTreeFile.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CTabTreeFile
  13. CTabTreeFile::CTabTreeFile()
  14. {
  15. m_bMultiSelect = true;
  16. }
  17. CTabTreeFile::~CTabTreeFile()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CTabTreeFile, CXTTreeCtrl)
  21. //{{AFX_MSG_MAP(CTabTreeFile)
  22. ON_WM_NCHITTEST_EX()
  23. ON_NOTIFY_REFLECT(TVN_ENDLABELEDIT, OnEndlabeledit)
  24. ON_WM_CREATE()
  25. //}}AFX_MSG_MAP
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CTabTreeFile message handlers
  29. BOOL CTabTreeFile::PreCreateWindow(CREATESTRUCT& cs) 
  30. {
  31. if( !CXTTreeCtrl::PreCreateWindow( cs ))
  32. return FALSE;
  33. // Set the style for the tree control.
  34. cs.style |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_EDITLABELS;
  35. // TODO: Modify the Window class or styles here by modifying
  36. //  the CREATESTRUCT cs
  37. return TRUE;
  38. }
  39. LRESULT CTabTreeFile::OnNcHitTest(CPoint point) 
  40. {
  41. UINT uFlag=0;
  42. // Get the cursor location in client coordinates.
  43. CPoint pt = point;
  44. ScreenToClient(&pt);
  45. // Get a pointer to the tooltip control.
  46. CToolTipCtrl* pCtrl = (CToolTipCtrl*)CWnd::FromHandle(
  47. (HWND)::SendMessage(m_hWnd, TVM_GETTOOLTIPS, 0, 0L));
  48. // If we have a valid tooltip pointer and the cursor
  49. // is over a tree item, the bring the tooltip control
  50. // to the top of the Z-order.
  51. if (pCtrl && HitTest(pt, &uFlag)){
  52. pCtrl->SetWindowPos(&wndTop,0, 0, 0, 0,
  53. SWP_NOACTIVATE | SWP_NOSIZE |SWP_NOMOVE);
  54. }
  55. return (LRESULT)CXTTreeCtrl::OnNcHitTest(point);
  56. }
  57. void CTabTreeFile::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
  58. {
  59. TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
  60. // TODO: Add your control notification handler code here
  61. if (pTVDispInfo->item.pszText)
  62. {
  63. SetItemText(pTVDispInfo->item.hItem,
  64. pTVDispInfo->item.pszText);
  65. }
  66. *pResult = 0;
  67. }
  68. BOOL CTabTreeFile::PreTranslateMessage(MSG* pMsg) 
  69. {
  70. // If the tree control has an edit control, don't allow
  71. // the framework to process accelerators, let the edit
  72. // control handle it instead...
  73. CEdit* pEditCtrl = GetEditControl();
  74. if (pEditCtrl && ::IsWindow(pEditCtrl->m_hWnd))
  75. {
  76. ::TranslateMessage(pMsg);
  77. ::DispatchMessage(pMsg);
  78. return TRUE;
  79. }
  80. return CXTTreeCtrl::PreTranslateMessage(pMsg);
  81. }
  82. int CTabTreeFile::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  83. {
  84. if (CXTTreeCtrl::OnCreate(lpCreateStruct) == -1)
  85. return -1;
  86. // Create the image list used by the tree control.
  87. if (!m_imageList.Create(IDB_IL_FILE, 16, 1, RGB(0x00,0x80,0x80)))
  88. return -1;
  89. // Get a pointer to the tree control, and set its imagelist.
  90. SetImageList(&m_imageList, TVSIL_NORMAL);
  91. // Initialize the view.
  92. UpdateTree();
  93. return 0;
  94. }
  95. void CTabTreeFile::UpdateTree()
  96. {
  97. // add the parent item, make it bold
  98. HTREEITEM htiParent = InsertItem(_T("Solution 'XtremeDemo': 1 project(s)"));
  99. HTREEITEM htiChild; // child item
  100. htiChild = InsertItem (_T("XtremeDemo Files"), 1, 1, htiParent);
  101. SetItemState (htiChild, TVIS_BOLD, TVIS_BOLD);
  102. // add the children of the parent item
  103. HTREEITEM hti = InsertItem(_T("Source Files"), 2, 3, htiChild);
  104. InsertItem(_T("ChildFrm.cpp"), 4, 4, hti);
  105. InsertItem(_T("MainFrm.cpp"), 4, 4, hti);
  106. InsertItem(_T("StdAfx.cpp"), 4, 4, hti);
  107. InsertItem(_T("XtremeDemo.cpp"), 4, 4, hti);
  108. InsertItem(_T("XtremeDemo.rc"), 4, 4, hti);
  109. InsertItem(_T("XtremeDemoDoc.cpp"), 4, 4, hti);
  110. InsertItem(_T("XtremeDemoView.cpp"), 4, 4, hti);
  111. Expand(hti, TVE_EXPAND);
  112. hti = InsertItem(_T("Header Files"), 2, 3, htiChild);
  113. InsertItem(_T("ChildFrm.h"), 5, 5, hti);
  114. InsertItem(_T("MainFrm.h"), 5, 5, hti);
  115. InsertItem(_T("Resource.rc"), 5, 5, hti);
  116. InsertItem(_T("StdAfx.h"), 5, 5, hti);
  117. InsertItem(_T("XtremeDemo.h"), 5, 5, hti);
  118. InsertItem(_T("XtremeDemoDoc.h"), 5, 5, hti);
  119. InsertItem(_T("XtremeDemoView.h"), 5, 5, hti);
  120. hti = InsertItem(_T("Resource Files"), 2, 3, htiChild);
  121. InsertItem(_T("Toolbar.bmp"), 5, 5, hti);
  122. InsertItem(_T("XtremeDemo.ico"), 5, 5, hti);
  123. InsertItem(_T("XtremeDemo.rc2"), 5, 5, hti);
  124. InsertItem(_T("XtremeDemoDoc.ico"), 5, 5, hti);
  125. InsertItem(_T("ReadMe.txt"), 5, 5, htiChild);
  126. InsertItem(_T("External Dependencies"), 2, 3, htiChild);
  127. Expand (htiParent, TVE_EXPAND);
  128. Expand (htiChild, TVE_EXPAND);
  129. }