void CPropTree::AddToVisibleList(CPropTreeItem* pItem) { if (!pItem) return; // check for an empty visible list if (!m_pVisbleList) m_pVisbleList = pItem; else { // Add the new item to the end of the list CPropTreeItem* pNext; pNext = m_pVisbleList; while (pNext->GetNextVisible()) pNext = pNext->GetNextVisible(); pNext->SetNextVisible(pItem); } pItem->SetNextVisible(NULL); }
CPropTreeItem* CPropTree::FindItem(const POINT& pt) { CPropTreeItem* pItem; CPoint p = pt; // convert screen to tree coordinates p.y += m_Origin.y; // search the visible list for the item for (pItem = m_pVisbleList; pItem; pItem = pItem->GetNextVisible()) { CPoint ipt = pItem->GetLocation(); if (p.y>=ipt.y && p.y<ipt.y + pItem->GetHeight()) return pItem; } return NULL; }