//*********************************************************
//
//设置ListCtrl的View样式
//
m_listCtrl.SetView(LV_VIEW_DETAILS);
//还有其它样式: View属性值
//LV_VIEW_DETAILS --- Report
//LV_VIEW_ICON --- Icon
//LV_VIEW_SMALLICON --- Small Icon
//LV_VIEW_LIST --- List
//使用最多的样式是LV_VIEW_DETAILS即View风格为Report
//一般是在ListCtrl控件的属性页面里设置View值为Report
//*********************************************************
//
//设置ListCtrl的风格
//
DWORD dwStyle = ::GetWindowLong(m_listCtrl.GetSafeHwnd(), GWL_STYLE);
dwStyle |= LVS_SINGLESEL; //只可单行选中
dwStyle |= LVS_SHOWSELALWAYS; //Always show selection
::SetWindowLong(m_listCtrl.GetSafeHwnd(), GWL_STYLE, dwStyle);
//*********************************************************
//
//设置ListCtrl的扩展风格
//
DWORD dwStyle = m_listCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES; //网格线
dwStyle |= LVS_EX_FULLROWSELECT; //整行高亮
dwStyle |= LVS_EX_CHECKBOXES; //Item前生成check box
m_listCtrl.SetExtendedStyle(dwStyle);
//*********************************************************
//
//通过Image间接设置行高
//
m_imgList.Create(1, 20, ILC_COLOR32, 1, 1); //图片宽1高20
m_listCtrl.SetImageList(&m_imgList, LVSIL_SMALL);
//*********************************************************
//
//插入Column
//
m_listCtrl.InsertColumn(0, TEXT("Name"), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, TEXT("Age"), LVCFMT_LEFT, 40);
m_listCtrl.InsertColumn(2, TEXT("Gender"), LVCFMT_LEFT, 60);
//*********************************************************
//
//插入Item
//
int nItem = 0;
nItem = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), TEXT("WangYao"), 0);
m_listCtrl.SetItemText(nItem, 1, TEXT("26")); //子项从1开始,0代表主项
m_listCtrl.SetItemText(nItem, 2, TEXT("Male"));
nItem = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), TEXT("WangYan"), 0);
m_listCtrl.SetItemText(nItem, 1, TEXT("24"));
m_listCtrl.SetItemText(nItem, 2, TEXT("Female"));
//*********************************************************
//
//删除Column
//
m_listCtrl.DeleteColumn(nCol);
//删除所有列(1)
int nColumnCount = m_listCtrl.GetHeaderCtrl()->GetItemCount();
for (int i=0; i < nColumnCount; i++)
{
m_listCtrl.DeleteColumn(0);
}
//删除所有列(2)
while (m_listCtrl.DeleteColumn(0));
//*********************************************************
//
//删除Item
//
m_listCtrl.DeleteItem(nItem);
m_listCtrl.DeleteAllItems();
//*********************************************************
//
//获取指定行指定列的Item Text: GetItemText
//
CString cstrInfo = m_listCtrl.GetItemText(1, 0); //与SetItemText对应
//*********************************************************
//
//SetItemData与GetItemData:设置与获取附加数据
//
BOOL SetItemData(int nItem, DWORD_PTR dwData)
DWORD_PTR GetItemData(int nItem) const
//*********************************************************
//
//获取当前选中项s
//
//方法1:
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if (pos == NULL) //当前没有选中项
{
}
else //有选中项
{
while (pos)
{
int nItem = m_listCtrl.GetNextSelectedItem(pos); //获取选中项的序号
}
}
//方法2:
for(int i=0; i<m_listCtrl.GetItemCount(); i++)
{
if(m_listCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
{
//表明选中第i项
}
}
//*********************************************************
//
//利用代码选中或取消选中某Item
//
//选中:(当然LVIS_FOCUSED可以省略)
m_listCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
m_listCtrl.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
//取消选中(当然LVIS_FOCUSED可以省略)
m_listCtrl.SetItemState(nItem, 0, LVIS_SELECTED | LVIS_FOCUSED);
m_listCtrl.SetItemState(nItem, 0, LVIS_SELECTED);
//*********************************************************
//
//获取或设置Check Box状态
//
BOOL GetCheck(int nItem) const;
BOOL SetCheck(int nItem, BOOL fCheck = TRUE);
//
// HitTest
//
CPoint pnt;
::GetCursorPos(&pnt);
m_listCtrl.ScreenToClient(&pnt);
LVHITTESTINFO info;
info.pt = pnt;
info.flags = LVHT_ONITEM;
m_listCtrl.SubItemHitTest(&info);
if (info.iItem == -1)
return;
CListCtrl使用总结
最新推荐文章于 2018-12-23 21:10:49 发布