zl程序教程

您现在的位置是:首页 >  其它

当前栏目

MFC设置listcontrol单元格颜色

设置 颜色 mfc 单元格
2023-09-14 09:07:09 时间

重写事件OnNMCustomdrawList1


void CBomDlg::OnNMCustomdrawList1(NMHDR* pNMHDR, LRESULT* pResult)
{
	
	NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
	if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
	{
		*pResult = CDRF_NOTIFYITEMDRAW;
	}
	else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
	{
	
		*pResult = CDRF_NOTIFYSUBITEMDRAW;
	}
	else if ((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage)
	{
	//	int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);
		
		int n = m_listControl.GetItemCount();//获取list里面有多少行
		
		CString s1;
			s1 = m_listControl.GetItemText(n-1, 7);
			
			if (pLVCD->iSubItem == 7)//这里是选择每一行的第一列
			{
				try
				{
					if (_ttof(s1) > 0)
					{
						COLORREF clrNewTextColor, clrNewBkColor;
						clrNewBkColor = RGB(255, 0, 0);
						pLVCD->clrTextBk = clrNewBkColor;
						*pResult = CDRF_DODEFAULT;
					}
				}
				catch (...)
				{

				}
			}

		//CString s1;
		//for (int i=0;i<n;i++)
		//{
		//	s1 = m_listControl.GetItemText(i, 7);
		//	
		//	if (pLVCD->iSubItem == 7)//这里是选择每一行的第一列
		//	{
		//		try
		//		{
		//			if (_ttof(s1) > 0)
		//			{
		//				COLORREF clrNewTextColor, clrNewBkColor;
		//				clrNewBkColor = RGB(255, 0, 0);
		//				pLVCD->clrTextBk = clrNewBkColor;
		//				*pResult = CDRF_DODEFAULT;
		//			}
		//		}
		//		catch (...)
		//		{

		//		}
		//		
		//		
		//	}
		//	
		//}
		
		//for (int i = 0; i <= nItem; i++)
		//{
		//	string ItemText = m_listControl.GetItemText(i, 1).GetBuffer(0);
		//	if (pLVCD->iSubItem == 7)//这里是选择每一行的第一列
		//	{

		//		CString s1=m_listControl.GetItemText(i, 7);
		//		cout << "++++"<<s1.GetBuffer() << endl;

		//		COLORREF clrNewTextColor, clrNewBkColor;
		//		clrNewBkColor = RGB(0, 255, 0);
		//		pLVCD->clrTextBk = clrNewBkColor;
		//		*pResult = CDRF_DODEFAULT;
		//	}
		//	else
		//	{
		//		//pLVCD->clrText = RGB(0, 0, 0);
		//		pLVCD->clrTextBk = RGB(255, 255, 255);
		//		*pResult = CDRF_DODEFAULT;
		//		break;
		//	}
		//}
	}
	UpdateWindow();
}