ListControl局部动态刷新(MFC)
(2011-07-28 17:47:34)一直想实现这个,不是WEB控件,没有现成的办法,网上查了好久,都是重载,也有说用双DC绘,但我都没实现成。这阵双脚肿得厉害,心情不是很好,但这个居然让我实现了,颇感安慰。
建一个LISTCONTROL应该没啥好说的吧,直接拉一个MFC的工具就成
初始化一个函数
int InitListControl()
{
_mylist.ModifyStyle(0l,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS|LVS_NOSORTHEADER);
_mylist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);
_mylist.InsertColumn(0,L"隐藏");
.
.
.
_mylist.SetColumnWidth(0,80);
.
.
.
return 0;
}
刷新数据弄一个函数
void ReListData(BOOL _b)
{
LockWindowUpdate();
//更新内容
int num=games.GetCount();
if(!num)return;
if(!_b)
{
_mylist.DeleteAllItems();
for(int i=0;i<num;i++)
{
_mylist.InsertItem(i,L" ");
}
}
for(int i=0;i<num;i++)
{
_game *lpgame=games.GetAt(i);
CString str=_mylist.GetItemText(i,0);
if(str.Compare(lpgame->user)!=0)
_mylist.SetItemText(i,0,lpgame->user);
.
.
.
}
UnlockWindowUpdate();
}
关键可不是这UplockWindowUpdate()这二个函数,而是里面的字符串比较,当不一样时才赋值,效果是刷新时只刷新数据更新的那个ITEM,这办法好不好?套用那个“官”说的话,反正我觉得很好!转贴写上出处,谢谢。