Tooltips For Tree Control Items  

Changing the tool tip as the mouse pointer moves along different tree control items is fairly simple. The tree control can be on a dialog, property page or a form view. Assuming that you use a class derived from CFormView called CMyFormView, which has a tree control, the steps to follow are: 

Declare a member variable for the tree control (IDC_TREE1), m_tree. 

Decide on how the tip for each tree item will be stored. For instance, you could hold the tip in a map which you declare in the header file CMyFormView.h. 

CMap< HTREEITEM,HTREEITEM&,CString,CString& > tooltipMap;

Fill the map as you generate the items of the tree. For instance after every InsertItem: 

HTREEITEM hItem = m_tree.InsertItem(&tvItem); // tvItem is of type TV_INSERTSTRUCT

tooltipMap[hItem] = " Tool Tip Text   ";   // Set the tool tip text of the item.

Declare an object of CToolTipCtrl in the header file CMyFormView .h 

CToolTipCtrl m_tooltip;

Create the tool tip control and initialize it in the OnInitialUpdate message handler (OnInitDialog for CDialog derived classes) 

m_tooltip.Create(this);

m_tooltip.Activate(TRUE);

m_tooltip.AddTool(GetDlgItem(IDC_TREE1), "Tree Tool Tip"); 

Override the PreTranslateMessage in the form view. 

BOOL CMyFormView::PreTranslateMessage(MSG* pMsg) 

{

// TODO: Add your specialized code here and/or call the base class

if(pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_tree.m_hWnd)

{

CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));

HTREEITEM hItem = m_tree.HitTest(point);

if(hItem != NULL)

{

CString text = tooltipMap[hItem];

m_tooltip.UpdateTipText(text,&m_tree);

m_tooltip.RelayEvent(pMsg);

}

}

}

This changes the tool tip text as the mouse pointer moves along the different items in the tree control. 

Date Posted: February 18, 1999