查看了CTreeCtrl的InsertItem代码,想看一下树节点保存到了什么地方,却发现这个函数最终只是发了一个消息。在MFC的代码中没有找到这个消息的响应函数。
应该是有个树型的数据结构来保存各个节点数据的,难道是在系统的内部有这么一个数据结构?
InsertItem在文件Winctrl2.cpp中,代码如下:HTREEITEM CTreeCtrl::InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
HTREEITEM hParent, HTREEITEM hInsertAfter)
{
ASSERT(::IsWindow(m_hWnd));
TVINSERTSTRUCT tvis;
tvis.hParent = hParent;
tvis.hInsertAfter = hInsertAfter;
tvis.item.mask = nMask;
tvis.item.pszText = (LPTSTR) lpszItem;
tvis.item.iImage = nImage;
tvis.item.iSelectedImage = nSelectedImage;
tvis.item.state = nState;
tvis.item.stateMask = nStateMask;
tvis.item.lParam = lParam;
return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);
}