文档原文:
This class currently simply presents a simpler to use interface for the wxListCtrl – it can be thought of as a façade for that complicated class.
Using it is preferable to using wxListCtrl directly whenever possible because in the future some ports might implement wxListView but not the full set of wxListCtrl features.
Other than different interface, this class is identical to wxListCtrl. In particular, it uses the same events, same window styles and so on.
意思是推荐使用wxListView。没感觉啥差别啊,有哪个大神知道能否告知一声么?
#include <wx/wx.h>
#include <wx/listctrl.h>
class Simple:public wxFrame
{
public:
Simple(const wxString& title);
void OnSelected(wxListEvent& event);
wxListView* lv;
};
Simple::Simple(const wxString& title)
:wxFrame(NULL,-1,title)
{
wxImage::AddHandler(new wxPNGHandler);
wxImageList* ilListCtrl = new wxImageList(16,16);
ilListCtrl->Add(wxBitmap("add.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("edit.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("del.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("save.png",wxBITMAP_TYPE_PNG));
wxListView* lv = new wxListView(this,-1,wxPoint(-1,-1),wxSize(-1,-1)
,wxLC_HRULES|wxLC_REPORT|wxLC_VRULES);
lv->SetImageList(ilListCtrl,wxIMAGE_LIST_SMALL);//设置图标列表
lv->AppendColumn("id");
lv->SetColumnWidth(0,100);
lv->AppendColumn("name",wxLIST_FORMAT_CENTER,100);
wxListItem colID;
colID.SetId(0);//必须设置
colID.SetText(wxT("ID"));
colID.SetWidth(100);//列宽
colID.SetAlign(wxLIST_FORMAT_CENTER);
wxListItem colName;
colName.SetId(1);
colName.SetText(wxT("名称"));
colName.SetAlign(wxLIST_FORMAT_CENTER);
colName.SetData(1);
long index;
index = lv->InsertItem(colID);
lv->SetItem(index,1,wxT("名称1"),0);//此处设置的名称的图标
lv->SetItemImage(index,1);//此处设置的行首图标
index = lv->InsertItem(colName);
lv->SetItem(index,1,wxT("名称2"),3);
lv->SetItemImage(index,2);
Bind(wxEVT_LIST_ITEM_SELECTED,Simple::OnSelected,this,lv->GetId());
Centre();
}
void Simple::OnSelected(wxListEvent& event)
{
long index = lv->GetFirstSelected();
if(index !=-1){
wxMessageBox(lv->GetItemText(index,0));
}
}