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 Control
void 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 funtion
void 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.效果截图: