码迷,mamicode.com
首页 > 其他好文 > 详细

List Control for Support ProgressCtrl

时间:2015-03-14 23:13:15      阅读:206      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!