1.CListCtrl InsertItem 插入条目 查看MSDN
int InsertItem( int nItem, //插入哪一行 LPCTSTR lpszItem //该行0列显示的字符 ); SetItemText 设置哪个列的字符 BOOL SetItemText( int nItem, //改动那个行 int nSubItem, //该行中那个子列 LPCTSTR lpszText //要设置的字符 );
2.列表设计思路:
(1)服务端上线后要显示在列表中,这样有一个统一的函数来处理会使代码更加简洁。
(2)消息显示分为成功失败两种,还要在其中显示消息产生的时间,这样也应该有一个统一的函数来处理。
3.上线列表添加处理:
// add column into List Controlvoid CPCRemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName, CString strOS, CString strCPU, CString strVideo, CString strPing){ m_CList_Online.InsertItem(0,strIP); //默认为0行 这样所有插入的新列都在最上面 m_CList_Online.SetItemText(0,ONLINELIST_ADDR,strAddr);//设置列的显示字符 这里 ONLINELIST_ADDR等 为第二节课中的枚举类型 用这样的方法 m_CList_Online.SetItemText(0,ONLINELIST_COMPUTER_NAME,strPCName); //解决问题会避免以后扩展时的冲突 m_CList_Online.SetItemText(0,ONLINELIST_OS,strOS); m_CList_Online.SetItemText(0,ONLINELIST_CPU,strCPU); m_CList_Online.SetItemText(0,ONLINELIST_VIDEO,strVideo); m_CList_Online.SetItemText(0,ONLINELIST_PING,strPing); }
4.添加日志消息的处理:
void CPCRemoteDlg::ShowMessage(bool bIsOK, CString strMsg){ CString strIsOK,strTime; CTime t=CTime::GetCurrentTime(); strTime=t.Format("%H:%H:%S"); if(bIsOK) { strIsOK="执行成功"; }else{ strIsOK="执行失败"; } m_CList_Message.InsertItem(0,strIsOK); m_CList_Message.SetItemText(0,1,strTime); m_CList_Message.SetItemText(0,2,strMsg);}
5.添加伪上线,和日志的测试代码,所以要加入一个用于测试的函数:
// just is a test funtionvoid CPCRemoteDlg::Test(void){ AddList("192.168.0.1","本机局域网","Pinggle","Windows XP","2.0GHZ","有","12323"); ShowMessage(true,"软件初始化成功...");}
然后在OnInitDialog 中调用: Test();
6.点击时整个行都是选中状态
InitList():中加入代码:
m_CList_Online.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_CList_Message.SetExtendedStyle(LVS_EX_FULLROWSELECT);
7.效果截图: