015 文件树控件和获取驱动信息

界面变化:

添加一个group box

Windows 窗体 GroupBox 控件用于为其他控件提供可识别的分组。 通常,可使用分组框按功能细分窗体。

在groupbox 里面添加了tree control,list control、一个按钮(获取文件信息)

list control

属性:改为小图标

完善了网络通信:

封装了一个SendCommandPacket(int nCmd, BYTE* pData, size_t nLength)接口

int CRemoteClientDlg::SendCommandPacket(int nCmd, BYTE* pData, size_t nLength)
{
    // 把控件的值赋给成员变量
    UpdateData();
    CClientSocket* pClient = CClientSocket::getInstance();
    bool ret = pClient->InitSocket(m_server_address, atoi((LPCTSTR)m_server_port));
    if (!ret)
    {
        AfxMessageBox("网络初始化失败");
        return -1;
    }
    CPacket packet(nCmd, pData, nLength);
    pClient->Send(packet);
    int cmd = pClient->DealCommand();
    TRACE("ack:%d\r\n", cmd);
    pClient->CloseSocket();
    return cmd;
}

获取驱动信息功能实现

InsertItem函数:

hParent:父项的句柄。

如果这个成员的值是TVI_ROOT或NULL,这项将被作为树形控件的根插入。 hInsertAfter:插入的新项之后的项的句柄。或是下列值之一: ​ TVI_FIRST: 在列表的开始插入项 ​ TVI_LAST: 在列表的最后插入项 ​ TVI_ROOT: 作为一个根项添加 ​ TVI_SORT: 以字母顺序插入项

void CRemoteClientDlg::OnBnClickedButFileinfo()
{
    // 发送命令并返回第一个packet
    // 如果由后续数据需要调用DealCommand来获取(这时recv函数不会阻塞,可以直接从缓冲区里面解析packet,解析一个就返回),可以循环调用
    int ret = SendCommandPacket(1);
    if (ret == -1)
    {
        AfxMessageBox(_T("命令处理失败"));
        return;
    }
    // 防止反复点击按钮,如果之前的数据不删除,就会越来越多
    m_tree.DeleteAllItems();
    CClientSocket* pclient = CClientSocket::getInstance();
    std::string drivers = pclient->GetPacket().strData;
    std::string tmp;
    for (int i = 0; i < drivers.size(); i++)
    {
        if (drivers[i] != ',' && drivers[i] != ' ')
        {
            tmp = drivers[i];
            tmp += ":";
            // 加到根目录下,以追加的方式添加
            // InsertItem 在树视图控件中插入新项
            m_tree.InsertItem(tmp.c_str(), TVI_ROOT, TVI_LAST);
        }
    }
}
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值