最近在写一个关于工业位号管理软件,参考风格为SupCon ESC-700 的VF位号管理风格。在位号管理上,使用控件的形式进行位号管理,主要通过对位号的查看,实现对位号的增加、删除、修改操作。
由于位号管理软件数据使用实时库进行数据支撑,所以与常规的数据库通信更加的底层,通过操作内存,实现对位号的管理,然后定时的将内存数据存储到Mysql表中,此处先不对内存等总结,主要为ListView控件的使用进行总计。
1、List Control 控件初始化
对控件的初始化对于可设置的属性,不做过多的解释。对于列表头的初始化,主要包括列表头信息、列宽度、类对齐方式初始化;
先通过获取静态List属性大小,然后构建CRect矩形进行列宽度分配,具体使用及代码如下所示:
2、List数据填充
位号开发软件数据填充,通过内存映射来实现,通过循环遍历CMap,将数据填充到行中,主要通过InsertItem和SetItemText函数实现。
首先通过InsertItem来新建列,然后通过SetItemText来对列中的数据进行行数据填充。
- InsertItem()
int InsertItem( int nItem, LPCTSTR lpszItem ),InsertItem使用直接通过行数与填充的LPCTSTR 数据填充即可。nItem代表List行所在行的Index。
- SetItemText()
BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText ),SetItemText需要申明填充的所在列——nSubItem,其余与InsetItem函数使用相同。
在本次调试中,发现数据一致为单行显示,没有细致排查,最后发现控件的DeleteAllItems函数写在了while中,是在是傻逼的不得了,每次添加后又删除了,所以导致只显示一行。