CListCtrl控件相关

//--------------------------------------------------------------------------------------------------------------------------

//详细的说明: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;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值