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

对话框与窗口

开发平台:

Visual C++

  1. // TabTreeResource.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Resource.h"
  5. #include "TabTreeResource.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CTabTreeResource
  13. CTabTreeResource::CTabTreeResource()
  14. {
  15. m_bMultiSelect = true;
  16. }
  17. CTabTreeResource::~CTabTreeResource()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CTabTreeResource, CXTTreeCtrl)
  21. //{{AFX_MSG_MAP(CTabTreeResource)
  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. // CTabTreeResource message handlers
  29. BOOL CTabTreeResource::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 CTabTreeResource::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 CTabTreeResource::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 CTabTreeResource::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 CTabTreeResource::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_RSRC, 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 CTabTreeResource::UpdateTree()
  96. {
  97. // add the parent item
  98. HTREEITEM htItem = InsertItem(_T("XtremeDemo resources"), 9, 9);
  99. SetItemState(htItem, TVIS_BOLD, TVIS_BOLD);
  100. HTREEITEM hti = InsertItem(_T("Accelerator"), 0, 1, htItem);
  101. InsertItem(_T("IDR_MAINFRAME"), 2, 2, hti);
  102. Expand(hti, TVE_EXPAND);
  103. hti = InsertItem(_T("Dialog"), 0, 1, htItem);
  104. InsertItem(_T("IDD_ABOUTBOX"), 3, 3, hti);
  105. Expand(hti, TVE_EXPAND);
  106. hti = InsertItem(_T("Icon"), 0, 1, htItem);
  107. InsertItem(_T("IDR_MAINFRAME"), 4, 4, hti);
  108. InsertItem(_T("IDR_XTREMETYPE"), 4, 4, hti);
  109. Expand(hti, TVE_EXPAND);
  110. hti = InsertItem(_T("Menu"), 0, 1, htItem);
  111. InsertItem(_T("IDR_MAINFRAME"), 5, 5, hti);
  112. InsertItem(_T("IDR_XTREMETYPE"), 5, 5, hti);
  113. hti = InsertItem(_T("String Table"), 0, 1, htItem);
  114. InsertItem(_T("String Table"), 6, 6, hti);
  115. hti = InsertItem(_T("Toolbar"), 0, 1, htItem);
  116. InsertItem(_T("IDR_MAINFRAME"), 7, 7, hti);
  117. hti = InsertItem(_T("Version"), 0, 1, htItem);
  118. InsertItem(_T("VS_VERSION_INFO"), 8, 8, hti);
  119. Expand (htItem, TVE_EXPAND);
  120. }