//--------------------------------------------------------------------------------------------------------------------------
//详细的说明:http://hi.baidu.com/kingcham/blog/item/6c2ab2c7be9373179c163d34.html
//.h
CListCtrl m_ListCtrl;
//.cpp
//设置全行选中风格
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
//带复选框
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);
//取消复选框
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() & (~ LVS_EX_FULLROWSELECT)&(~LVS_EX_GRIDLINES)&(~LVS_EX_CHECKBOXES));
//获得被选记录,从0开始
for(int i=0;i<9;i++){
CString t;
t.Format(_T("%d"),i);
if(m_ListCtrl.GetCheck(i))
MessageBox(t+_T("被选中"));
}
//删除所有列
while(m_ListCtrl.DeleteColumn(0));
//删除所有行
m_ListCtrl.DeleteAllItems();
//响应双击事件获得记录ID
// CTemperatureRecordDlg.h
afx_msg void OnDoubleClick(NMHDR* pNMHDR, LRESULT* pResult);
// CTemperatureRecordDlg.cpp
BEGIN_MESSAGE_MAP(CXXXDlg,CDialogEx)
ON_NOTIFY(NM_DBLCLK,IDC_LIST2,&CTemperatureRecordDlg::OnDoubleClick)
END_MESSAGE_MAP()
void CTemperatureRecordDlg::OnDoubleClick(NMHDR* pNMHDR, LRESULT* pResult){
int nItem = -1;
LPNMITEMACTIVATE lpNMItemActivate = (LPNMITEMACTIVATE)pNMHDR;
if(lpNMItemActivate != NULL){
nItem = lpNMItemActivate->iItem;
}
m_ListCtrl.SetItemState(nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
CString str;
str.Format(_T("%i"),nItem);
MessageBox(str);
}
//在CListCtrl中设置出网格
//void CSQLiteTestDlg::OnPaint()中加入
DWORD dwStyle = m_ListCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
m_ListCtrl.SetExtendedStyle(dwStyle); //设置扩展风格
//CListCtrl简单应用步骤
//行和列编号是从0开始
CRect rect;
m_ListCtrl.GetWindowRect(&rect);
int nWidth =(int)( rect.Width() /4); //四分之一的LISTCTRL宽度
//1.先使用InsertColumn()插入列标题
m_ListCtrl.InsertColumn (0,_T("ID"),LVCFMT_CENTER,nWidth,0);
m_ListCtrl.InsertColumn (1,_T("NAME"),LVCFMT_LEFT,nWidth,1);
m_ListCtrl.InsertColumn (2,_T("AGE"),LVCFMT_CENTER,nWidth,2);
//2.使用InsertItem()插入行,并在行的第一列填写数据
m_ListCtrl.InsertItem(0,_T("1"));//第0行
//3.使用SetItem()依次填写后面列数据
m_ListCtrl.SetItem(0,1, LVIF_TEXT, _T("jim"), 0, 0, 0, 0);//第0行第1列
m_ListCtrl.SetItem(0,3, LVIF_TEXT, _T("18"), 0, 0, 0, 0);//第0行第2列
//4.重复 2、3过程
//设置某行颜色
//IDC_LIST1
//.h
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
//.cpp
BEGIN_MESSAGE_MAP()
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomDraw)
END_MESSAGE_MAP()
void CSQLiteTestDlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult){
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ){
*pResult = CDRF_NOTIFYITEMDRAW;
}else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ){
// 这里仅仅比较文本,注意:index == pLVCD->nmcd.dwItemSpec
if (m_ListCtrl.GetItemText(pLVCD->nmcd.dwItemSpec, 1) == "异常启动"){
pLVCD->clrText = RGB(0,0,0);
pLVCD->clrTextBk = RGB(204,255,204);
}
// Tell Windows to paint the control itself.
*pResult = CDRF_DODEFAULT;
}
}