1.上一节我们为列表控件添加变量,我们来查看变量的成员:
CListCtrl 类 查看MSDN 找到
int InsertColumn( int nCol, //列的顺序 LPCTSTR lpszColumnHeading, //列的名字 int nFormat = LVCFMT_LEFT, //列对齐的方式 LVCFMT_LEFT, LVCFMT_RIGHT,LVCFMT_CENTER int nWidth = -1, //列的宽度 int nSubItem = -1 //与之联系的子条目 默认为-1 我们不用写 );
2.因为这个列表比较重要所以要放到一个每一个文件都能访问到的文件很自然的就是stdafx.h
enum{ ONLINELIST_IP=0, //IP的列顺序 ONLINELIST_ADDR, //地址 ONLINELIST_COMPUTER_NAME, //计算机名/备注 ONLINELIST_OS, //操作系统 ONLINELIST_CPU, //CPU ONLINELIST_VIDEO, //摄像头 ONLINELIST_PING //PING};
3.处理列表的代码应该统一放在一处,添加列表处理的代码InitList()函数。
4.写入加入列表列名的代码:
列表的名字与列表的宽度是同一一对应的关系,以后为了以后修改方便建立这样的一个结构体:
typedef struct{ char *title; //列表的名称 int nWidth; //列表的宽度}COLUMNSTRUCT;
然后建立这个结构体变量的数组
COLUMNSTRUCT g_Column_Online_Data[] = { {"IP", 148 }, {"区域", 150 }, {"计算机名/备注", 160 }, {"操作系统", 128 }, {"CPU", 80 }, {"摄像头", 81 }, {"PING", 81 }};
添加全局变量
int g_Column_Online_Count=7; //列表的个数
依照此,添加信息列表的结构体:
COLUMNSTRUCT g_Column_Message_Data[] = { {"信息类型", 68 }, {"时间", 100 }, {"信息内容", 660 }};int g_Column_Message_Count=3; //列表的个数
5.在initList函数中写入加入列表列名称的代码并解释:
// init listint CPCRemoteDlg::InitList(void){ m_CList_Online.SetExtendedStyle(LVS_EX_FULLROWSELECT); // 设置选中整行. for (int i = 0; i < g_Column_Online_Count; i++) { // 依次插入列. m_CList_Online.InsertColumn(i, g_Column_Online_Data[i].title,LVCFMT_CENTER,g_Column_Online_Data[i].nWidth,-1); } m_CList_Message.SetExtendedStyle(LVS_EX_FULLROWSELECT); // 设置选中整行. for (int i = 0; i < g_Column_Message_Count; i++) { // 依次插入列. m_CList_Message.InsertColumn(i, g_Column_Message_Data[i].title,LVCFMT_CENTER,g_Column_Message_Data[i].nWidth,-1); } return 0;}
6.在Oninitdlg中调用InitList()
7.改变列表控件的属性 ICon 改为Report