Beispiel #1
0
BOOL ExpandUpToSearchedItem(CWnd* pPropWnd, CTypedPtrList<CObList, CuIpmTreeFastItem*>& rIpmTreeFastItemList, BOOL bAutomated)
{
    CfIpmFrame* pIpmFrame = NULL;
    if (bAutomated) {
        ASSERT (pPropWnd->IsKindOf(RUNTIME_CLASS(CfIpmFrame)));
        pIpmFrame = (CfIpmFrame*)pPropWnd;
    }
    else {
        pIpmFrame = (CfIpmFrame*)pPropWnd->GetParentFrame();
        ASSERT (pIpmFrame->IsKindOf(RUNTIME_CLASS(CfIpmFrame)));
    }
    ASSERT (pIpmFrame);

    // Get selected item handle
    HTREEITEM hItem = 0;
    if (bAutomated) {
        hItem = 0;      // Will force search on all root items
    }
    else {
        hItem = pIpmFrame->GetSelectedItem();
        ASSERT (hItem);
    }

    // Loop on fastitemlist
    POSITION pos = rIpmTreeFastItemList.GetHeadPosition();
    while (pos) {
        CuIpmTreeFastItem* pFastItem = rIpmTreeFastItemList.GetNext (pos);
        hItem = pIpmFrame->FindSearchedItem(pFastItem, hItem);
        if (!hItem) {
            ASSERT (FALSE);
            return FALSE;
        }
    }
    pIpmFrame->SelectItem(hItem);
    return TRUE;
}