MFC ListControl 智障总结

最近在写一个关于工业位号管理软件,参考风格为SupCon ESC-700 的VF位号管理风格。在位号管理上,使用控件的形式进行位号管理,主要通过对位号的查看,实现对位号的增加、删除、修改操作。

由于位号管理软件数据使用实时库进行数据支撑,所以与常规的数据库通信更加的底层,通过操作内存,实现对位号的管理,然后定时的将内存数据存储到Mysql表中,此处先不对内存等总结,主要为ListView控件的使用进行总计。

1、List Control 控件初始化

  对控件的初始化对于可设置的属性,不做过多的解释。对于列表头的初始化,主要包括列表头信息、列宽度、类对齐方式初始化;

  先通过获取静态List属性大小,然后构建CRect矩形进行列宽度分配,具体使用及代码如下所示:

  

 

 2、List数据填充

  位号开发软件数据填充,通过内存映射来实现,通过循环遍历CMap,将数据填充到行中,主要通过InsertItemSetItemText函数实现。

  首先通过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中,是在是傻逼的不得了,每次添加后又删除了,所以导致只显示一行。

posted @ 2022-03-10 16:41  草木同朽  阅读(210)  评论(0编辑  收藏  举报