在MFC应用中,经常要使用listcontrol控件,例如数据库查询操作等等,非常重要。
DWORD dwStyle=::GetWindowLong(m_MyList.m_hWnd,GWL_STYLE);
//设置为报表形式
SetWindowLong(m_MyList.m_hWnd,GWL_STYLE,dwStyle|LVS_REPORT);
DWORD ExStyle =m_MyList.GetExtendedStyle();
//设置为整栏选择和网格线
m_MyList.SetExtendedStyle(ExStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//初始化列表标题栏
m_MyList.InsertColumn(0,"名称",LVCFMT_LEFT,100,-1);
m_MyList.InsertColumn(1,"大小",LVCFMT_LEFT,100,-1);
m_MyList.InsertColumn(2,"类型",LVCFMT_LEFT,100,-1);
m_MyList.DeleteAllItems();
//初始化列表条目
int Pos;
Pos=m_MyList.InsertItem(0,"CHIMES");
m_MyList.SetItemText(Pos,1,"55KB");
m_MyList.SetItemText(Pos,2,"波形声音");
Pos=m_MyList.InsertItem(1,"CHORD");
m_MyList.SetItemText(Pos,1,"95KB");
m_MyList.SetItemText(Pos,2,"波形声音");
Pos=m_MyList.InsertItem(2,"DING");
m_MyList.SetItemText(Pos,1,"79KB");
m_MyList.SetItemText(Pos,2,"波形声音");
Pos=m_MyList.InsertItem(3,"FLOURISH");
m_MyList.SetItemText(Pos,1,"24KB");
m_MyList.SetItemText(Pos,2,"波形声音");
UpdateData(FALSE);
单击消息
ON_NOTIFY(NM_CLICK, IDC_MYLIST, OnNMClickMylist)
//处理鼠标单击列表条目操作
void CTestDlg::OnNMClickMylist(NMHDR *pNMHDR, LRESULT *pResult)
{
int cursel = m_MyList.GetSelectionMark();
CString str = "";
str.Format(_T("%d"), cursel);
AfxMessageBox(str);
CString StrInfo,Str;
Str=m_MyList.GetItemText(cursel,0);
StrInfo="名称:";
StrInfo+=Str+";";
Str=m_MyList.GetItemText(cursel,1);
StrInfo+="大小:";
StrInfo+=Str+";";
Str=m_MyList.GetItemText(cursel,2);
StrInfo+="类型:";
StrInfo+=Str;
GetDlgItem(IDC_EDITSHOWINFO)->SetWindowText(StrInfo);
/*
for(int i=0;i<m_MyList.GetItemCount();i++)
{
if(m_MyList.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
{
CString StrInfo,Str;
Str=m_MyList.GetItemText(i,0);
StrInfo="名称:";
StrInfo+=Str+";";
Str=m_MyList.GetItemText(i,1);
StrInfo+="大小:";
StrInfo+=Str+";";
Str=m_MyList.GetItemText(i,2);
StrInfo+="类型:";
StrInfo+=Str;
GetDlgItem(IDC_EDITSHOWINFO)->SetWindowText(StrInfo);
}
}
*/
*pResult = 0;
}
最好建议使用指针类型:
CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
ASSERT(pListCtrl != NULL);
如果使用指针就需要释放,不然可能会产生内存泄漏这样很严重的情况出现,但是如果使用类的实例
就不可能出现这些问题。