由于现在好菜,下面写一个最简单的树节点排序以及显示气泡的程序:
对于气泡的显示:
1.声明一个成员变量:CToolTipCtrl* m_pToolTipCtrl;
2.在构造函数中:
m_pToolTipCtrl = new CToolTipCtrl;
if (!m_pToolTipCtrl-> Create(this, TTS_ALWAYSTIP))
{
TRACE(_T( "Unable To create ToolTip\n "));
}
m_pToolTipCtrl->Activate(TRUE);
最好不要再OnintDlg中写以上代码,哥以及尝过一次苦头了,有的时候行,有的时候不行,在构造函数里面万无一失。
3.顺带在析构函数中把它干掉
if(m_pToolTipCtrl != NULL)
{
delete m_pToolTipCtrl;
m_pToolTipCtrl = NULL;
}
4.插入子节点,排序,并加入气泡
HTREEITEM CConfigurationToolDlg::AddDeviceItem(CString strName)
{
CRect rect;
HTREEITEM hSubItem;
TV_ITEM tvItem;
TV_INSERTSTRUCT tvIns;
tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE| TVIF_SELECTEDIMAGE ;
int nLength = strName.GetLength();
tvItem.pszText = strName.GetBuffer(nLength);
tvItem.cchTextMax = nLength;
tvItem.iImage = 1;
tvItem.iSelectedImage = 1;
tvItem.cChildren = 1;
tvIns.item = tvItem;
tvIns.hInsertAfter = TVI_LAST;
tvIns.hParent = TVI_ROOT ;
hSubItem = m_DevTree.InsertItem(&tvIns);
m_DevTree.SortChildren(TVI_ROOT); //排序
m_DevTree.GetItemRect(hSubItem,&rect,TRUE); //
m_pToolTipCtrl->AddTool(&m_DevTree,m_strName,&rect,m_uCout);//
m_uCout++; //int类型
m_DevTree.Expand(m_hRoot, TVE_EXPAND);
return hSubItem;
}
5.在消息中显示气泡
BOOL CConfigurationToolDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if(0xD == pMsg->wParam)
{
return FALSE;
}
}
if(m_pToolTipCtrl) //
m_pToolTipCtrl->RelayEvent(pMsg); //
return CDialog::PreTranslateMessage(pMsg);
}