在VC中使用ListCtrl保存上线主机SOCKET句柄

我知道在BCB中的列表框有一个DATE项,昨天晚上在群里草草说VC的ListCtrl也可以存入一个
DWORD类型的数据,这让我很高兴因为,当时我正为如何处理上线主机的SOCKET列表而头疼,
而SOCKET是 unsigned long类型的,也就是说可以把上线的主机存在ListCtrl中,而使用这个方法可以搞定了

保存SOCKET数据


int num=m_list.InsertItem(ImageID,szIP,ImageID);
m_list.SetItemData(num,(DWORD)client);//保存服务SOCKET句柄

这样就把SOCKET句柄跟列表项连接到一快了


获取SOCKET数据

为LIST加一个单击鼠标的消息,当收到消息时取出SOCKET值并设置为 当前SOCKET,代码如下

void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
    POSITION pos = m_list.GetFirstSelectedItemPosition();
    int currentSelect=m_list.GetNextSelectedItem(pos);    //取当前选择项

    if(currentSelect>=0)
    {    
        DWORD val;
        val=m_list.GetItemData(currentSelect);        //得到数据
        CurrentServerSocket=(SOCKET)val;        //转为SOCKET
    }
    *pResult = 0;