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

对话框与窗口

开发平台:

Visual C++

  1. // TabTreeClass.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Resource.h"
  5. #include "TabTreeClass.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CTabTreeClass
  13. CTabTreeClass::CTabTreeClass()
  14. {
  15. m_bMultiSelect = true;
  16. }
  17. CTabTreeClass::~CTabTreeClass()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CTabTreeClass, CXTTreeCtrl)
  21. //{{AFX_MSG_MAP(CTabTreeClass)
  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. // CTabTreeClass message handlers
  29. BOOL CTabTreeClass::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 CTabTreeClass::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 CTabTreeClass::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 CTabTreeClass::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 CTabTreeClass::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_CLASS, 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 CTabTreeClass::UpdateTree()
  96. {
  97. // Add the parent item
  98. HTREEITEM htItem = InsertItem(_T("XtremeDemo classes"));
  99. SetItemState( htItem, TVIS_BOLD, TVIS_BOLD );
  100. // Add children
  101. HTREEITEM hti = InsertItem(_T("CAboutDlg"), 3, 3, htItem);
  102. InsertItem(_T("CAboutDlg()"), 4, 4, hti);
  103. InsertItem(_T("DoDataExchange(CDataExchange *pDX)"), 5, 5, hti);
  104. hti = InsertItem(_T("CChildFrame"), 3, 3, htItem);
  105. InsertItem(_T("AssertValid()"), 4, 4, hti);
  106. InsertItem(_T("CChildFrame()"), 4, 4, hti);
  107. InsertItem(_T("~CChildFrame()"), 4, 4, hti);
  108. InsertItem(_T("Dump(CDumpContext &dc)"), 4, 4, hti);
  109. InsertItem(_T("PreCreateWindow(CREATESTRUCT& cs)"), 4, 4, hti);
  110. hti = InsertItem(_T("CMainFrame"), 3, 3, htItem);
  111. InsertItem(_T("AssertValid()"), 4, 4, hti);
  112. InsertItem(_T("CMainFrame()"), 4, 4, hti);
  113. InsertItem(_T("~CMainFrame()"), 4, 4, hti);
  114. InsertItem(_T("Dump(CDumpContext &dc)"), 4, 4, hti);
  115. InsertItem(_T("OnCreate(LPCREATESTRUCT lpCreateStruct)"), 5, 5, hti);
  116. InsertItem(_T("PreCreateWindow(CREATESTRUCT& cs)"), 4, 4, hti);
  117. InsertItem(_T("m_wndStatusBar"), 7, 7, hti);
  118. InsertItem(_T("m_wndToolBar"), 7, 7, hti);
  119. hti = InsertItem(_T("CXtremeDemoApp"), 3, 3, htItem);
  120. InsertItem(_T("CXtremeDemoApp()"), 4, 4, hti);
  121. InsertItem(_T("InitInstance()"), 4, 4, hti);
  122. InsertItem(_T("OnAppAbout()"), 4, 4, hti);
  123. hti = InsertItem(_T("CXtremeDemoDoc"), 3, 3, htItem);
  124. InsertItem(_T("AssertValid()"), 5, 5, hti);
  125. InsertItem(_T("CXtremeDemoDoc()"), 4, 4, hti);
  126. InsertItem(_T("~CXtremeDemoDoc()"), 4, 4, hti);
  127. InsertItem(_T("Dump(CDumpContext &dc)"), 4, 4, hti);
  128. InsertItem(_T("OnNewDocument()"), 4, 4, hti);
  129. InsertItem(_T("Serialize(CArchive& ar)"), 4, 4, hti);
  130. Expand(hti, TVE_EXPAND);
  131. hti = InsertItem(_T("CXtremeDemoView"), 3, 3, htItem);
  132. InsertItem(_T("AssertValid()"), 4, 4, hti);
  133. InsertItem(_T("CXtremeDemoView()"), 5, 5, hti);
  134. InsertItem(_T("~CXtremeDemoView()"), 4, 4, hti);
  135. InsertItem(_T("Dump(CDumpContext& dc)"), 4, 4, hti);
  136. InsertItem(_T("GetDocument()"), 4, 4, hti);
  137. InsertItem(_T("OnBeginPrinting(CDC* pDC, CPrintInfo *pInfo)"), 5, 5, hti);
  138. InsertItem(_T("OnDraw(CDC *pDC)"), 4, 4, hti);
  139. InsertItem(_T("OnEndPrinting(CDC *pDC, CPrintInfo *pInfo)"), 5, 5, hti);
  140. InsertItem(_T("OnPreparePrinting(CPrintInfo *pInfo)"), 5, 5, hti);
  141. InsertItem(_T("PreCreateWindow(CREATESTRUCT &cs)"), 4, 4, hti);
  142. hti = InsertItem(_T("Globals"), 1, 2, htItem);
  143. InsertItem(_T("theApp"), 6, 6, hti);
  144. Expand(hti, TVE_EXPAND);
  145. Expand(htItem, TVE_EXPAND);
  146. }