【远控编写04】客户端界面的设计和编写--列表中添加条目
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.效果截图: