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

C++ 如何在MFC Treeview中设置运行时的工具提示?,c++,mfc,C++,Mfc,如何在MFC Treeview中设置运行时的工具提示 我正在创建这样的treeview: m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW); 非常感谢您的帮助。如果您正在引用树控件中

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

我正在创建这样的treeview:

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

非常感谢您的帮助。

如果您正在引用树控件中项目的工具提示,则需要将
TVS\u INFOTIP
添加到
创建中的窗口样式中(请参阅)。您还必须处理通知消息,以根据项目提供工具提示文本。

使用TVS\u信息提示样式查看树视图,并使用on\u通知处理程序处理TVN\u GETINFOTIP通知。将NMHDR ptr类型转换为NMTVGETINFOTOOLTIP ptr,如下所示 (NMTVGETINFOTOOLTIP*)pnmhdr,然后在此结构中设置工具提示字符串。

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

afx_msg void OnMyTreeGetInfoTip(NMHDR pNMHDR, LRESULT pResult);
在开始消息映射块中添加-

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;   
}

如果您从CTreeControl派生自己的控件,Pankaj的答案是有效的。 卡萨布兰卡的答案是正确的,只是缺少密码

以下是我个人经验中的一些建议

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

  • 否则,可以通过获取树的窗口句柄在运行时修改样式

    HWND htreectrl=m_TreeCtrl.GetSafeHwnd(); LONG nOldStyle=GetWindowLong(htreectrl,GWL_样式); 长nNewStyle=nOldStyle&TVS\U信息提示; SetWindowLong(htreectrl、GWL_样式、nNewStyle)

  • 要能够处理GETINFOTIP,请执行以下操作:

    如果将TreeControl用作对话框中的成员控件:

    ON_NOTIFY(TVN_GETINFOTIP、IDC_树、OnMyTreetInfoTip)

    否则,如果您是从CTreeControl派生自己的控件,请使用以下命令:

    ON_NOTIFY_REFLECT(TVN_GETINFOTIP、OnMyTreeGetInfoTip)


希望这对其他人有所帮助。

你能提供一些示例吗?我刚刚在创建时在treeview中添加了TVS\u信息提示,但没有显示任何工具提示。如何进行下一步?您应该编辑以前的回复,而不是发布多个回复。