首页 > 其他 > 详细

List Control for Support ProgressCtrl

时间:2015-03-14 23:10:22      阅读:359      评论:0      收藏:0      [点我收藏+]

源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/ProgressList.zip

技术分享 

CProgressListCtrl是CListCtrl的扩展类,支持在ListCtrl中显示ProgressCtrl控件。

主要代码如下:

void CProgressListCtrl::OnPaint()
{
	if(m_ProgressColumn>=0)
	{
		int Top=GetTopIndex();
		int Total=GetItemCount();
		int PerPage=GetCountPerPage();
		int LastItem=((Top+PerPage)>Total)?Total:Top+PerPage;

		int Count=(int)m_ProgressList.GetCount();
		for(int i=0;i<Count;i++)
		{
			CProgressCtrl* pControl=m_ProgressList.GetAt(0);
			pControl->DestroyWindow();
			m_ProgressList.RemoveAt(0);
		}

		CRect rcHeader,rcItem;
		CHeaderCtrl* pHeader=GetHeaderCtrl();
		pHeader->GetItemRect(m_ProgressColumn,&rcHeader);

		for(int i=Top;i<LastItem;i++)
		{

			GetItemRect(i,&rcItem,LVIR_LABEL);
			rcItem.top+=1;
			rcItem.bottom-=1;
			rcItem.left+=rcHeader.left;
			int Width=rcHeader.Width();
			rcItem.right=rcItem.left+Width-4;


			CProgressCtrl* pControl=new CProgressCtrl();
			pControl->Create(NULL,rcItem,this,IDC_PROGRESS_LIST+i);

			CString Data=GetItemText(i,0);
			int Percent;
#ifdef _UNICODE
			Percent=_wtoi(Data);
#else
			Percent=atoi(Data);
#endif

			pControl->SetPos(Percent);
			pControl->ShowWindow(SW_SHOWNORMAL);
			m_ProgressList.Add(pControl);
		}


	}

	
	CListCtrl::OnPaint();

	
}

 

  

 

List Control for Support ProgressCtrl

原文:http://www.cnblogs.com/rainboy2010/p/4338410.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!