如何在MFC Treeview中的运行时设置工具提示?

时间:2010-10-29 04:35:04

标签: c++ mfc

如何在MFC Treeview中的运行时设置工具提示?

我正在创建这样的树视图:

                        m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |                     
            TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);

感谢任何帮助..

4 个答案:

答案 0 :(得分:0)

如果您在树控件中引用项目的工具提示,则需要将TVS_INFOTIP添加到Create中的窗口样式(请参阅list of tree-view styles)。您还必须处理TVN_GETINFOTIP通知消息,以根据项目提供工具提示文本。

答案 1 :(得分:0)

使用TVS_INFOTIP样式进行树视图,并使用ON_NOTIFY处理程序处理TVN_GETINFOTIP通知。将NMHDR ptr命名为NMTVGETINFOTOOLTIP ptr as (NMTVGETINFOTOOLTIP *)pnmhdr然后在此结构中设置工具提示字符串。

答案 2 :(得分:0)

这里有一些代码: - 在.H文件中

afx_msg void OnMyTreeGetInfoTip(NMHDR pNMHDR, LRESULT pResult);

在BEGIN MESSAGE MAP栏中添加 -

ON_NOTIFY_REFLECT (TVN_GETINFOTIP, OnMyTreeGetInfoTip)

并使用处理程序

void CMyTreeView::OnMyTreeGetInfoTip(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMTVGETINFOTIP pGetInfoTip = (LPNMTVGETINFOTIP)pNMHDR;   
    CString strItemTxt = m_TreeCtrl.GetItemText(pGetInfoTip->hItem);
    strcpy(pGetInfoTip->pszText, strItemTxt);  
    *pResult = 0;   
}

答案 3 :(得分:0)

如果您从CTreeControl派生自己的控件,Pankaj的答案会有效。 Cassablanca的答案是正确的,只有代码丢失。

所以这里有一些我自己的经验提示。

  • 如果您没有显式创建控件,可以在定义控件的资源文件中指定GETINFOTIP样式。

  • 否则可以通过获取树的窗口句柄

    在运行时修改样式

    HWND htreectrl = m_TreeCtrl.GetSafeHwnd(); LONG nOldStyle = GetWindowLong(htreectrl,GWL_STYLE); LONG nNewStyle = nOldStyle& TVS_INFOTIP; SetWindowLong(htreectrl,GWL_STYLE,nNewStyle);

  • 能够处理GETINFOTIP:

    如果您在对话框中使用TreeControl作为成员控件:

    ON_NOTIFY(TVN_GETINFOTIP,IDC_TREE,OnMyTreeGetInfoTip)

    否则,如果您从CTreeControl派生自己的控件,请使用:

    ON_NOTIFY_REFLECT(TVN_GETINFOTIP,OnMyTreeGetInfoTip)

希望这有助于某人。