📄 thclistview.cpp
字号:
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 + -