如何在MFC Treeview中的运行时设置工具提示?
我正在创建这样的树视图:
m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);
感谢任何帮助..
答案 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)
希望这有助于某人。