发新话题
打印

code 用TREE显示统计信息,怎么更新?

code 用TREE显示统计信息,怎么更新?

Ttvdata::Ttvdata(HWND hTree)
{
        m_hTree = hTree;

        int i;
        TREE_ITEM item = {0};
        char text [60] = {0};

        item.id = ELEM_STATE;
        item.parent_id = 0;
        lstrcpy(item.text, "Stopped");
        m_lst_item.push_back(item);
       
                item.id = ELEM_STATE_SPEED;
                item.parent_id = ELEM_STATE;
                lstrcpy(item.text, "Speed:");
                m_lst_item.push_back(item);

                item.id = ELEM_STATE_ELAPSED;
                item.parent_id = ELEM_STATE;
                lstrcpy(item.text, "Elasped time:");
                m_lst_item.push_back(item);

        item.id = ELEM_DOWNLOADED;
        item.parent_id = 0;
        lstrcpy(item.text, "Downloaded");
        m_lst_item.push_back(item);
               
                item.id = ELEM_DOWNLOADED_A;
                item.parent_id = ELEM_DOWNLOADED;
                lstrcpy(item.text, "Pages");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_DOWNLOADED_A+i+1;
                                item.parent_id = ELEM_DOWNLOADED_A;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }
                item.id = ELEM_DOWNLOADED_P;
                item.parent_id = ELEM_DOWNLOADED;
                lstrcpy(item.text, "Pics");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_DOWNLOADED_P+i+1;
                                item.parent_id = ELEM_DOWNLOADED_P;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }
       
        item.id = ELEM_QUEUED;
        item.parent_id = 0;
        lstrcpy(item.text, "Queued");
        m_lst_item.push_back(item);
               
                item.id = ELEM_QUEUED_A;
                item.parent_id = ELEM_QUEUED;
                lstrcpy(item.text, "Pages");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_QUEUED_A+i+1;
                                item.parent_id = ELEM_QUEUED_A;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }
                item.id = ELEM_QUEUED_P;
                item.parent_id = ELEM_QUEUED;
                lstrcpy(item.text, "Pics");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_QUEUED_P+i+1;
                                item.parent_id = ELEM_QUEUED_P;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }

        item.id = ELEM_FAILED;
        item.parent_id = 0;
        lstrcpy(item.text, "Failed");
        m_lst_item.push_back(item);

                item.id = ELEM_FAILED_A;
                item.parent_id = ELEM_FAILED;
                lstrcpy(item.text, "Pages");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_FAILED_A+i+1;
                                item.parent_id = ELEM_FAILED_A;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }
                item.id = ELEM_FAILED_P;
                item.parent_id = ELEM_FAILED;
                lstrcpy(item.text, "Pics");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_FAILED_P+i+1;
                                item.parent_id = ELEM_FAILED_P;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }

        item.id = ELEM_FILTERED;
        item.parent_id = 0;
        lstrcpy(item.text, "Filtered");
        m_lst_item.push_back(item);

                item.id = ELEM_FILTERED_A;
                item.parent_id = ELEM_FILTERED;
                lstrcpy(item.text, "Pages");
                m_lst_item.push_back(item);
                        for (i=0; i<=g_nSearchDepth; i++) {
                                item.id = ELEM_FILTERED_A+i+1;
                                item.parent_id = ELEM_FILTERED_A;
                                sprintf(text, "Level %d", i);
                                lstrcpy(item.text, text);
                                m_lst_item.push_back(item);
                        }

       
        list<TREE_ITEM>::iterator pos = m_lst_item.begin();
        while (pos != m_lst_item.end())
        {
                TVINSERTSTRUCT is;
                long parent_id = get_parent((*pos).id);
                HTREEITEM hParent = get_elem(parent_id);
                is.hParent = hParent;
                is.hInsertAfter = TVI_LAST;
                is.item.mask = TVIF_TEXT;
                is.item.pszText = (*pos).text;
                is.item.cchTextMax = strlen((*pos).text);
                HTREEITEM h = TreeView_InsertItem(hTree, &is);
                (*pos).hItem = h;
                pos++;
        }               
}

HTREEITEM Ttvdata::get_elem(long id)
{
        list<TREE_ITEM>::iterator pos = m_lst_item.begin();
        while (pos != m_lst_item.end()) {
                if ((*pos).id == id)
                        return (*pos).hItem;
                pos++;
        }
        return NULL;
}

long Ttvdata::get_elem (HTREEITEM hItem)
{
        list<TREE_ITEM>::iterator pos = m_lst_item.begin();
        while (pos != m_lst_item.end()) {
                if ((*pos).hItem == hItem)
                        return (*pos).id;
                pos++;
        }
        return 0;
}

long Ttvdata::get_parent(long id)
{
        list<TREE_ITEM>::iterator pos = m_lst_item.begin();
        while (pos != m_lst_item.end()) {
                if ((*pos).id == id)
                        return (*pos).parent_id;
                pos++;
        }
        return 0;
}

void Ttvdata::set_text(long id, const char* text)
{
        list<TREE_ITEM>::iterator pos = m_lst_item.begin();
        while (pos != m_lst_item.end()) {
                if ((*pos).id == id) {
                        lstrcpy((*pos).text, text);
                        return;
                }
                pos++;
        }
}

///////////////////////////////////////////////////////////////////////////////////////////////

void Ttvdata::refresh(long id)
{
        if (id == 0)
        {
                list<TREE_ITEM>::iterator pos = m_lst_item.begin();
                while (pos != m_lst_item.end()) {
                        refresh((*pos).id);
                        pos++;
                }
        }
        else
        {
                list<TREE_ITEM>::iterator pos = m_lst_item.begin();
                while (pos != m_lst_item.end())
                {
                        if ((*pos).id == id) {
                                TVITEM item = {0};
                                item.mask = TVIF_TEXT;
                                item.hItem = (*pos).hItem;
                                item.pszText = (*pos).text;
                                item.cchTextMax = strlen((*pos).text);
                                TreeView_SetItem(m_hTree, &item);
                                return;
                        }
                        pos++;
                }
        }
}

Tqueue* Ttvdata::get_queue(long id)
{
        if (id > ELEM_DOWNLOADED_A && id <= ELEM_DOWNLOADED_A+g_nSearchDepth+1)
                return g_q_a_downloaded[id-ELEM_DOWNLOADED_A-1];

        if (id > ELEM_DOWNLOADED_P && id <= ELEM_DOWNLOADED_P+g_nSearchDepth+1)
                return g_q_p_downloaded[id-ELEM_DOWNLOADED_P-1];


        if (id > ELEM_QUEUED_A && id <= ELEM_QUEUED_A+g_nSearchDepth+1)
                return g_q_a_queued[id-ELEM_QUEUED_A-1];

        if (id > ELEM_QUEUED_P && id <= ELEM_QUEUED_P+g_nSearchDepth+1)
                return g_q_p_queued[id-ELEM_QUEUED_P-1];


        if (id > ELEM_FAILED_A && id <= ELEM_FAILED_A+g_nSearchDepth+1)
                return g_q_a_failed[id-ELEM_FAILED_A-1];

        if (id > ELEM_FAILED_P && id <= ELEM_FAILED_P+g_nSearchDepth)
                return g_q_p_failed[id-ELEM_FAILED_P];


        if (id > ELEM_FILTERED_A && id <= ELEM_FILTERED_A+g_nSearchDepth+1)
                return g_q_a_filtered[id-ELEM_FILTERED_A];

        if (id > ELEM_FILTERED_P && id <= ELEM_FILTERED_P+g_nSearchDepth-1)
                return g_q_p_filtered[id-ELEM_FILTERED_P];

        return NULL;       
}

///////////////////////////////////////////////////////////////////////////////////////////////

TOP

发新话题