Displaying Information in a CTreeView ToolTip

This article was contributed by John Czopowik.

Environment:

There is some confusion in the MFC world regarding CTreeView and tooltips. It seems as though the conservative approach of handling TTN_NEEDTEXTW and TTN_NEEDTEXTA notification messages does not work for some, known-only-to-Microsoft, reason. The following code requires comctl32.dll version 4.71 or later. Windows with IE ver 4.0 has this DLL updated already. A newer tree common control has an additional style: You can use the setting style of tree view: TVS_INFOTIP. In turn, the tree control will send notification message TVN_GETINFOTIP when the control is requesting text for tooltips. The handler receives a pointer to NMTVGETINFOTIP structure that has information about the tree item.

In this example, I set tootips to an item text. In the header file of the CTreeView derived class, declare a message handler:

afx_msg void OnTvnGetInfoTip NMHDR pNMHDR LRESULT pResult

And in cpp, use following macro:

BEGIN_MESSAGE_MAP (CTreeViewTestView, CTreeView)
    .
    .
    .
    ON_NOTIFY_REFLECT (TVN_GETINFOTIP, OnTvnGetInfoTip)
END_MESSAGE_MAP()

And define the handler:

void CTestTreeView::OnTvnGetInfoTip(NMHDR *pNMHDR, 
                                    LRESULT *pResult)

{
  LPNMTVGETINFOTIP pGetInfoTip = (LPNMTVGETINFOTIP)pNMHDR

  CString csItemTxt = 
     m_TreeCtrl.GetItemText(pGetInfoTip->hItem);

  strcpy(pGetInfoTip->pszText, csItemTxt);

  *pResult = 0;

}

Don't forget to add a ModifyStyle command in OnInitialUpdate:

GetTreeCtrl().ModifyStyle(0,
                          TVS_HASLINES |
                          TVS_LINESATROOT |
                          TVS_HASBUTTONS |
                          TVS_INFOTIP



About the Author

John Z. Czopowik VC++ MVP

Microsoft VC++ MVP

Comments

  • Using this Method with Visual C++ Version 5

    Posted by sweeneymini on 06/16/2005 07:12am

    I have the upto date MFC DLL AFAIK, so can I use the new functionality of this version (e.g. using TVN_GETINFOTIP) or am I restricted to using what MFC version it came with?

    Reply
  • Delay Time ?

    Posted by Legacy on 06/03/2003 12:00am

    Originally posted by: Yury

    This samble very good and simple. But i have unpleasant problem with delay time. 
    
    This code does not make any effect. WHY ???

    CToolTipCtrl* pTTCtrl = MyTree.GetToolTips();
    if(pTTCtrl != NULL)
    {
    pTTCtrl->SetDelayTime(TTDT_AUTOPOP, 2000);
    pTTCtrl->SetDelayTime(TTDT_INITIAL, 2000);
    pTTCtrl->SetDelayTime(TTDT_RESHOW, 2000);
    }

    The tooltipCtrl of tree use default value=500 anyway.

    • Delay Time ?

      Posted by yotamwimmer on 12/12/2010 05:41pm

      Were you able to solve this issue?

      Reply
    Reply
  • tree_view_newbie

    Posted by Legacy on 11/18/2002 12:00am

    Originally posted by: c_k


    Would need some easy Tutorial, to implement a Tree View.
    Your exampe might be good, but where to insert the code.
    (SDI ?, Doc/View ?????)

    Reply
  • Some corrections

    Posted by Legacy on 08/28/2002 12:00am

    Originally posted by: Giraud

    message handler:
    
    

    afx_msg void OnTvnGetInfoTip (NMHDR* pNMHDR, LRESULT* pResult);

    and some ";" in the source code

    don't forget to remove TVS_NOTOOLTIPS style
    when you add TVS_INFOTIP

    ModifyStyle(TVS_NOTOOLTIPS, TVS_INFOTIP);

    and it works correctly !

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • CentreCorp is a fully integrated and diversified property management and real estate service company, specializing in the "shopping center" segment, and is one of the premier retail service providers in North America. Company executives travel a great deal, carrying a number of traveling laptops with critical current business data, and no easy way to back up to the network outside the office. Read this case study to learn how CentreCorp implemented a suite of business continuity services that included …

Most Popular Programming Stories

More for Developers

RSS Feeds