⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thclistview.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	int ncount=0;
	int nLine=0;
	if(Hpage!=1)
	{
///////////////////////德阳版算法////////////////////////
		/*Hnum=Hpage;
		while(Hnum!=0)
		{
			if((Curpage-Hnum)%Hpage==0)
			{
				if(Hnum==1)
				{
					CurGrow=0;
					nGrow=xnumber[Hnum];
				}
				else
				{
					CurGrow=0;
					for(int i=1;i<=Hnum-1;i++)
						CurGrow+=xnumber[i];
					if(Hnum!=Hpage)
						nGrow=xnumber[Hnum];
					else
						nGrow=1000;
				}
				CurPage1=(Curpage-Hnum)/Hpage;//Curpage-Hnum)%Hpage==0
				break;
			}
			Hnum-=1;
		}*/
/////////////////////////////////////////////////////////////
//		        唐洪川改进    2001-12-27
        Hnum=Curpage%Hpage;
		if(Hnum==0) Hnum=Hpage;
		if(Hnum==1)
		{
			CurGrow=0;
			nGrow=xnumber[Hnum];
		}
		else
		{
			CurGrow=0;
			for(int i=1;i<=Hnum-1;i++)
				CurGrow+=xnumber[i];
			if(Hnum!=Hpage)
				nGrow=xnumber[Hnum];
			else
				nGrow=1000;
		}
		CurPage1=(Curpage-Hnum)/Hpage;
/////////////////////////////////////////////////////////////////
	}
	else
	{
		CurPage1=Curpage-1;
		nGrow=xnumber[1];
	}
	int i=0;
	while(GetListCtrl().GetColumn(CurGrow,&Column) && i<nGrow)
	{
///////////////////////////////////////////////////thc--
		length=len*ColumnWidth[CurGrow];////
		str=Column.pszText;
		rect.left=EndX;
		rect.right=rect.left+length;

		pDC->FillRect(rect,&brush);
		if(nLine!=0)
		{
			pDC->MoveTo(rect.left,rect.top);
			pDC->LineTo(rect.left,rect.bottom);
		}
		else
			nLine+=1;

		//rect.left+=5;
		//rect.right-=5;
		pDC->DrawText(str,rect,DT_CENTER|DT_VCENTER);
		///rect.left-=5;
		//rect.right+=5;

		rect1.left=rect.left;
		rect1.right=rect.right;
		int n=0;
		int j=CurPage1*vnumber;
		ncount=0;
		while(n<vnumber)
		{
			str=GetListCtrl().GetItemText(j,CurGrow);
			rect1.top+=len+5;
			rect1.bottom+=len+5;
			for(int x=0;x<100;x++)
			{
			    pDC->DrawText(str,rect1,DT_CENTER|DT_VCENTER);
				break;
			    /*if(AlignText[x]==-1)
				{
					rect1.left+=5;
					pDC->DrawText(str,rect1,DT_LEFT|DT_VCENTER);
					rect1.left-=5;
					break;
				}
				if(CurGrow==AlignText[x])
				{
					pDC->DrawText(str,rect1,DT_CENTER|DT_VCENTER);
					break;
				}*/
			}
			n+=1;
			j+=1;
			if(str=="" && GetListCtrl().GetItemText(j-1,0)=="")//thc--第0列一般为序号
				break;
			ncount+=1;
		}
		pDC->MoveTo(rect1.right,StartY+(len+5));
		pDC->LineTo(rect1.right,StartY+(ncount+1)*(len+5));
		rect1.top=StartY;
		rect1.bottom=StartY+(len+5);
		EndX+=abs(length);
		CurGrow+=1;
		i+=1;
	}

	for(int n=0;n<=ncount;n++)
	{
		pDC->MoveTo(StartX,StartY+n*(len+5));
		pDC->LineTo(EndX,StartY+n*(len+5));
		EndY+=len+5;
	}
	EndY-=len+5;
	pDC->MoveTo(StartX,EndY+5);
	pDC->LineTo(EndX,EndY+5);
	
	pDC->MoveTo(StartX,StartY);
	pDC->LineTo(StartX,EndY+5);
	pDC->MoveTo(EndX,StartY);
	pDC->LineTo(EndX,EndY+5);

	pDC->SelectObject(pOldFont);
	newfont.DeleteObject();
	brush.DeleteObject();
	BlackSolidPen.DeleteObject();	
	BlackDashPen.DeleteObject();
}


/************************************************************************
  MaxHPage

  Used to return How many the print horisional page 	

**************************************************************************/

int CThcListView::MaxHPage(CDC *pDC,LOGFONT logfont,int nColumn,int *ColumnWidth,int *xnumber)
{
	int Hpage=1;

	static TCHAR szBuff[MAX_PATH];
/*Contains information about a column in report view. This structure 
is used both for creating and manipulating columns. This structure 
supersedes the LV_COLUMN structure.

typedef struct _LVCOLUMN { 
    UINT mask; 
    int fmt; 
    int cx; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iSubItem; 
#if (_WIN32_IE >= 0x0300)
    int iImage;
    int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN; */
/*mask 
Variable specifying which members contain valid information. This member can be zero, or one or more of the following values.

Value Description 
LVCF_FMT The fmt member is valid. 
LVCF_IMAGE Version 4.70. The iImage member is valid. 
LVCF_ORDER Version 4.70. The iOrder member is valid. 
LVCF_SUBITEM The iSubItem member is valid. 
LVCF_TEXT The pszText member is valid. 
LVCF_WIDTH The cx member is valid. 

	LVCOLUMN Column;
	Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	Column.cchTextMax=sizeof(szBuff);
	Column.pszText=szBuff;*/

	int cxPage=pDC->GetDeviceCaps(VERTRES);//pDC->GetDeviceCaps(HORZRES);
	int ptrate = 6;//thc:tempcxPage/((GsmDetailWnd*)GetParentFrame())->icx+1;//thc--
	//logfont.lfHeight=24;
	logfont.lfHeight*=ptrate;
	int len=abs(logfont.lfHeight)+15;

	int length;
	CRect rect;
	int nGrow=0;
	int StartX=30*ptrate;
	for(int i=0;i<nColumn;i++)
	{
		length=len*ColumnWidth[i];//thc--
		rect.left=StartX;
		rect.right=rect.left+length;
		if(rect.right<=cxPage-30*ptrate)
		{
			StartX+=length;
			nGrow+=1;
			xnumber[Hpage]=nGrow;//thc--每一横页的统计列数
		}
		else
		{
			StartX=50*ptrate;
			rect.left=StartX;
			rect.right=rect.left+length;
			StartX+=length;
			Hpage+=1;//
			nGrow=1;
			xnumber[Hpage]=nGrow;
		}
	}
	return Hpage;
}

/************************************************************************
  MaxVPage

  Used to return How many the print verical page 	

**************************************************************************/
int CThcListView::MaxVPage(CDC *pDC,LOGFONT logfont,int &vnumber)
{
	/*static TCHAR szBuff[MAX_PATH];
	LVCOLUMN Column;
	Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	Column.cchTextMax=sizeof(szBuff);
	Column.pszText=szBuff;*/
	
	int cxPage=pDC->GetDeviceCaps(HORZRES);
	int cyPage=pDC->GetDeviceCaps(HORZRES);//pDC->GetDeviceCaps(VERTRES);
	float ptrate = cxPage/800.0+1;
    //logfont.lfHeight=24;
	logfont.lfHeight*=ptrate;
	int len=abs(logfont.lfHeight)+15;

	int StartY=50*ptrate;

//	vnumber[0]=0;
	vnumber=0;
	while(StartY<cyPage-20*ptrate)
	{
		vnumber+=1;
		StartY+=len;
	}
	int Vpage=GetListCtrl().GetItemCount()/(vnumber);
	if(GetListCtrl().GetItemCount()%(vnumber)!=0)
		Vpage+=1;
	if(Vpage==0)
		Vpage=1;

	return Vpage;
}

void CThcListView::SetListViewPrintFont()
{
//	LOGFONT logfont;
//	logfont=ScreenConfig.TextFont;
	m_logfont.lfHeight				=-18;
	m_logfont.lfWidth				=0;
	m_logfont.lfEscapement			=0;
	m_logfont.lfOrientation			=0;
	m_logfont.lfWeight				=800;
	m_logfont.lfItalic				=FALSE;
	m_logfont.lfUnderline			=FALSE;
	m_logfont.lfStrikeOut			=FALSE;
	m_logfont.lfCharSet				=ANSI_CHARSET;
	m_logfont.lfOutPrecision		=OUT_DEFAULT_PRECIS;
	m_logfont.lfClipPrecision		=CLIP_DEFAULT_PRECIS;
	m_logfont.lfQuality				=DEFAULT_QUALITY;
	m_logfont.lfPitchAndFamily		=DEFAULT_PITCH | FF_SWISS;
	strcpy(m_logfont.lfFaceName,"Arial");
}

BOOL CThcListView::PreCreateWindow(CREATESTRUCT& cs) 
{
	TRACE0("thc:CThcListView::PreCreateWindow(..)\n");
	cs.style &= ~LVS_TYPEMASK;
	cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT ;		
	
	return CListView::PreCreateWindow(cs);
}

void CThcListView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	TRACE0("thc:CThcListView::OnUpdate(..)\n");
	CSqlData* pdata=(CSqlData*)pHint;	
	if(pdata)
	{
		CListCtrl* pListCtrl=&GetListCtrl();
		pListCtrl->DeleteAllItems ();

		LV_ITEM		lvi;//LPTSTR pszText; 
		lvi.mask = LVIF_TEXT;
		//lvi.cchTextMax=30;

		POSITION pos = pdata->list.GetHeadPosition();
		for(UINT i=0;i<pdata->GetCount()&&pos!=NULL;i++)
		{
			SqlData* psqldata=pdata->list.GetNext(pos);
			lvi.iItem = i;
			for(int j=0;j<pdata->colCount;j++)
			{
				lvi.iSubItem = j;
////////////////////////////////////////////////////////////////////////linkID 
//(char*)(LPCTSTR)psqldata->pData[j],(CString->const char*->char*)
				lvi.pszText = (char*)(LPCTSTR)psqldata->pData[j];
				if (j==0)
					pListCtrl->InsertItem(&lvi);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////linkName
/*				if( j==0 )
				{
					CString str=config.GetLinkFromID( atoi(psqldata->pData[0]) )->strName;
					lvi.pszText = (char*)(LPCTSTR)str;
					//lvi.pszText=psqldata->pData[j].GetBuffer(0);
					pListCtrl->InsertItem(&lvi);
				}*/
//////////////////////////////////////////////////////////////////////////////
				else
					pListCtrl->SetItemText(i, j, psqldata->pData[j]);
			}
		}
		pListCtrl->UpdateWindow();
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -