GXLRESULT CWETreeViewReceiver::InvokeNotify( GXNMHDR* pnmhdr ) { //CWETreeViewReceiver* pTreeViewReceiver = TryCastReceiver(pReceiver, m_pReceiver); //if(pTreeViewReceiver == NULL) // return 0L; if( ! gxIsWindow(pnmhdr->hwndFrom)) { return -1; } GXNMTREEVIEW* pnmtv = (GXNMTREEVIEW*)pnmhdr; CWETreeView TreeViewWnd(pnmhdr->hwndFrom); switch(pnmhdr->code) { case GXTVN_ITEMEXPANDING: return ItemExpanding(&TreeViewWnd, (CWETreeView::Expand)pnmtv->action, &pnmtv->itemNew); case GXTVN_ITEMEXPANDED: ItemExpanded(&TreeViewWnd, (CWETreeView::Expand)pnmtv->action, &pnmtv->itemNew); break; case GXTVN_SELCHANGED: SelChanged(&TreeViewWnd, (CWETreeView::Change)pnmtv->action, &pnmtv->itemOld, &pnmtv->itemNew); break; case GXTVN_SELCHANGING: return SelChanging(&TreeViewWnd, (CWETreeView::Change)pnmtv->action, &pnmtv->itemOld, &pnmtv->itemNew); } return 0L; }
BOOL CRepositoryNode::Expand(UINT nCode) { if (!m_bVirtualNode) return CRepositoryBaseNode::Expand(nCode); if ((nCode & TVE_COLLAPSE) == TVE_COLLAPSE) GetTreeView()->DeleteAllItems(); else if (GetTreeView()->GetCount() == 0) ItemExpanding(); return true; }