基于MFC的列表框CListCtrl项目添加与筛除函数

18 篇文章 1 订阅

自己写的一个列表框项目添加与筛除函数,该函数应用于TCP/UDP服务端或客户端连接时更新列表框中的项目:如果新连接设备IP地址不同,则在列表框中添加新设备的IP、端口、索引;如果新连接设备的IP地址已经存在,则添加新设备替换原来相同IP的设备;还可指定IP地址的设备进行筛除。

void CUDP_ServerDlg::UpdateList(LPCTSTR Ip,int No,int Operation)    //更新列表框  operation为0,添加新设备;为1,筛除指定IP设备
{
    CString ip_add;                     //添加的IP地址中间变量
    ip_add.Format(_T("%s"), Ip);        //转换为CString类型

    if(Operation==0)                    //添加新设备
    {
        CString no;                     //端口中间变量
        no.Format(_T("%d"),No);         //转换为CString类型

        if(m_list.GetItemCount()==0)    //列表框中没有项目则添加第一项
        {
                m_list.InsertItem(0,_T("0"));           //插入新行
                m_list.SetItemText(0, 1, Ip);           //新行第1列插入IP
                m_list.SetItemText(0, 2, no);           //新行第2列插入no
        }
        else        //列表中已添加了项目
        {   
            bool flag=0;                                    //新连接设备IP是否在列表框中存在的标志位
            for (int k = 0; k < m_list.GetItemCount(); k++) //判断新连接设备IP地址在列表中已经存在
            {
                if (m_list.GetItemText(k, 1) == ip_add )    //IP地址号项目,则删除IP相同的已连接设备
                {
                    m_list.DeleteItem(k);                   //筛除IP相同设备
                    CString list_no;
                    list_no.Format(_T("%d"),k);
                    m_list.InsertItem(k,list_no);           //在筛除的设备位置插入新行(设备)
                    m_list.SetItemText(k, 1, Ip);           //新行第1列插入IP
                    m_list.SetItemText(k, 2, no);           //新行第2列插入端口号no
                    flag=1;
                }
                else if ((k == m_list.GetItemCount()-1)&&(flag==0))         //如果新连设备IP在列表框中没有,则在最后一次循环中添加新行(设备)
                {
                    CString list_c;
                    list_c.Format(_T("%d"),m_list.GetItemCount());          //
                    m_list.InsertItem(m_list.GetItemCount(),list_c);        //在列表框最后添加新行(设备)    
                    m_list.SetItemText(m_list.GetItemCount()-1, 1, Ip);     //新行第1列插入IP地址
                    m_list.SetItemText(m_list.GetItemCount()-1, 2, no);     //新行第2列插入端口号no
                }
                else    //其他情况空操作
                {}
            }
        }
    }
    else        //筛除列表框项目(设备)
    {
        for(int i=0;i<m_list.GetItemCount();i++)
        {
            if (m_list.GetItemText(i, 1) == ip_add )    //IP地址号项目,则删除IP相同的已连接设备
            {
                m_list.DeleteItem(i);                   //筛除IP相同设备
            }
        }
    }

}

函数说明:
1、函数三个参数分别代表设备的IP地址,设备的端口号,操作类型
2、m_list为定义的列表框变量,定义:

CListCtrl m_list;

3、调用:

    CUDP_ServerDlg *dlg = (CUDP_ServerDlg*)lpParm;
    dlg->UpdateList(gcClientIP,n,0);                        //更新列表框
或者直接用
     UpdateList(gcClientIP,n,0);                        //更新列表框`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值