读书人

怎么清除ListControl控件里面的所有条

发布时间: 2013-11-11 14:02:17 作者: rapoo

如何清除ListControl控件里面的所有条目
本帖最后由 u010829873 于 2013-11-09 11:28:22 编辑 本人正在学习Windows API,这两天在写一个程序,需要用到ListControl控件。如果这个程序用MFC来写会容易得多,但是我想用Windows API,以便加深对它的理解。其实如果用MFC,那么事情会简单很多,因为MFC里面可以用CListCtrl类,直接用它就行了,这个类封装了ListControl控件的很多操作。此外,WindowsX.h头文件里面也有一些宏,可以实现我想要的功能。我都没有用它们,我想深入理解底层,研究它们是如何实现的,为此我自己写了一些函数,所以如何用API函数直接在ListControl控件里添加条目的问题我已经解决。

//此函数可以实现在ListControl里面添加一列,因为我后面要在循环语句里调用它,所以用nPos标示想添加的列的号码
inline VOID InsertColumn(HWND hwnd,CString csString,int nWidth,int nPos,LVCOLUMN LvColumn)
{
LvColumn.cx=nWidth;
LvColumn.pszText=csString.AllocSysString();
SendMessage(hwnd,LVM_INSERTCOLUMN,nPos,(LPARAM)&LvColumn);
}
//此函数可以实现在ListControl里面添加一行
inline VOID InsertItem(HWND hwnd,CString csString,int iItem,LVITEMW LvItem)
{
LvItem.mask=LVIF_TEXT;
LvItem.cchTextMax=128;
LvItem.iItem=iItem;
LvItem.pszText=csString.AllocSysString();
SendMessage(hwnd,LVM_INSERTITEM,0,(LPARAM)&LvItem);
}
//此函数可以实现设定ListControl控件里面某一位置上显示的内容
inline VOID SetItemText(HWND hwnd,CString csString,int iItem,int iSubItem,LVITEMW LvItem)
{
LvItem.iItem=iItem;
LvItem.iSubItem=iSubItem;
LvItem.pszText=csString.AllocSysString();
SendMessage(hwnd,LVM_SETITEMTEXT,iItem,(LPARAM)&LvItem);
}
现在的问题是,我希望用户单击一个按钮后,每次都能对ListControl控件进行初始化,清空里面原有的所有内容,然后再向ListControl里添加新的内容。别对我说,可以用DeleteAllItem(),这个我知道,但是它是MFC里面CListCtrl类的一个成员函数。我没有用MFC,也没有复杂的类继承关系,我用的是纯Windows API,求API解决方案!
最后谢谢各位帮忙的同仁!谢谢你们! Win32?API 控件
[解决办法]
api控件操作一般都是通过Sendmessage发送相应的消息进行操控的
[解决办法]

引用:
Quote: 引用:

SendMessage(hwnd,LVM_DELETEALLITEMS ,0,0);

貌似不行啊。

可以的,一直没问题.

读书人网 >VC/MFC

热点推荐