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

📄 cpage.cpp

📁 print for you as example.very nice
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	UINT	OldColor,OldMode;
	if(pUserFunc==NULL)
		return 0;
	SaveState();
	ConvertPosition(row,col);
	m_PrtDesc.rc.top=(int)row+pRegion->FirstY;

	m_PrtDesc.rc.bottom=pRegion->bottom;
	m_PrtDesc.rc.right=pRegion->right;
	m_PrtDesc.rc.left=pRegion->FirstX;

	if(pRegion->FillColor > FILL_NONE)
		OldMode=m_PrtDesc.pDC->SetBkMode(TRANSPARENT); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		OldColor= SetColor(COLOR_WHITE); 		

	int res=Print(pUserFunc(ID),(int)col+pRegion->FirstX,TextFlags,PointSize);

	if(pRegion->FillColor > FILL_NONE)
		m_PrtDesc.pDC->SetBkMode(OldMode); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		SetColor(OldColor); 		

	int nLineSpacing = m_Spacing > 1 ? (int)(ConvertToMappedUnits(m_PrtDesc.PointSize/72.0,VERTRES)*(m_Spacing-1)):0;
	RestoreState();
	return ConvertToInches( (int)( (res-pRegion->FirstY)+nLineSpacing),VERTRES);

}
////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params: coordinates of the bounding rectangle flags pointsize and text to print
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,LPCSTR Text)
{
	if(Left > SetRightMargin(0))
		return;
	if(Top > SetBottomMargin(0))
		return;
	SaveState();
	m_PrtDesc.Text=Text;
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=Left;
    m_PrtDesc.rc.top=Top;
	m_PrtDesc.rc.right=Right;
    m_PrtDesc.rc.bottom=Bottom;
	    
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(double Top,double Left,double Bottom,double Right,UINT flags,int PointSize,LPCSTR Text)
{
	if(Left > SetRightMargin(0.0))
		return;
	if(Top > SetBottomMargin(0.0))
		return;
	SaveState();
	m_PrtDesc.Text=Text;
	ConvertArea(Top,Left,Bottom,Right);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=(int)Left;
    m_PrtDesc.rc.top=(int)Top;
	m_PrtDesc.rc.right=(int)Right;
    m_PrtDesc.rc.bottom=(int)Bottom;
	    
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}


////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params: coordinates of the bounding rectangle flags pointsize and user supplied ID
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,int ID)
{
	if(pUserFunc==NULL)
		return;
	if(Left > SetRightMargin(0))
		return;
	if(Top > SetBottomMargin(0))
		return;
	SaveState();
	m_PrtDesc.Text=pUserFunc(ID);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=Left;
    m_PrtDesc.rc.top=Top;
	m_PrtDesc.rc.right=Right;
    m_PrtDesc.rc.bottom=Bottom;
	    
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:  Calls user defined function for data
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(double Top,double Left,double Bottom,double Right,UINT flags,int PointSize,int ID)
{
	if(pUserFunc==NULL)
		return;
	if(Left > SetRightMargin(0.0))
		return;
	if(Top > SetBottomMargin(0.0))
		return;
	SaveState();
	m_PrtDesc.Text=pUserFunc(ID);
	ConvertArea(Top,Left,Bottom,Right);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=(int)Left;
    m_PrtDesc.rc.top=(int)Top;
	m_PrtDesc.rc.right=(int)Right;
    m_PrtDesc.rc.bottom=(int)Bottom;
	    
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(CPrintRegion* pRegion,int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,LPCSTR Text)
{
	UINT	OldColor,OldMode;
	SaveState();
	m_PrtDesc.Text=Text;
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=Left+pRegion->FirstX;
    m_PrtDesc.rc.top=Top+pRegion->FirstY;
	m_PrtDesc.rc.right=Right+pRegion->FirstX;
    m_PrtDesc.rc.bottom=Bottom+pRegion->FirstY;

	if(m_PrtDesc.rc.bottom > pRegion->bottom)
		m_PrtDesc.rc.bottom=pRegion->bottom;
	if(m_PrtDesc.rc.left > pRegion->right)
		m_PrtDesc.rc.left=pRegion->right;
	if(m_PrtDesc.rc.top > pRegion->bottom)
		m_PrtDesc.rc.top=pRegion->bottom;
	if(m_PrtDesc.rc.right > pRegion->right)
		m_PrtDesc.rc.right=pRegion->right;
	
	if(pRegion->FillColor > FILL_NONE)
		OldMode=m_PrtDesc.pDC->SetBkMode(TRANSPARENT); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		OldColor= SetColor(COLOR_WHITE); 		

	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       

	if(pRegion->FillColor > FILL_NONE)
		m_PrtDesc.pDC->SetBkMode(OldMode); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		SetColor(OldColor); 		

	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(CPrintRegion* pRegion,double Top,double Left,double Bottom,double Right,UINT flags,int PointSize,LPCSTR Text)
{
	UINT	OldColor,OldMode;
	SaveState();
	m_PrtDesc.Text=Text;
	ConvertArea(Top,Left,Bottom,Right);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=(int)Left+pRegion->FirstX;
    m_PrtDesc.rc.top=(int)Top+pRegion->FirstY;
	m_PrtDesc.rc.right=(int)Right+pRegion->FirstX;
    m_PrtDesc.rc.bottom=(int)Bottom+pRegion->FirstY;

	if(m_PrtDesc.rc.bottom > pRegion->bottom)
		m_PrtDesc.rc.bottom=pRegion->bottom;
	if(m_PrtDesc.rc.left > pRegion->right)
		m_PrtDesc.rc.left=pRegion->right;
	if(m_PrtDesc.rc.top > pRegion->bottom)
		m_PrtDesc.rc.top=pRegion->bottom;
	if(m_PrtDesc.rc.right > pRegion->right)
		m_PrtDesc.rc.right=pRegion->right;
	
	if(pRegion->FillColor > FILL_NONE)
		OldMode=m_PrtDesc.pDC->SetBkMode(TRANSPARENT); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		OldColor= SetColor(COLOR_WHITE); 		

	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       

	if(pRegion->FillColor > FILL_NONE)
		m_PrtDesc.pDC->SetBkMode(OldMode); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		SetColor(OldColor); 		

	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:  Calls user defined function for data
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(CPrintRegion* pRegion,int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,int ID)
{
	UINT	OldColor,OldMode;

	if(pUserFunc==NULL)
		return;
	SaveState();
	m_PrtDesc.Text=pUserFunc(ID);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=Left+pRegion->FirstX;
    m_PrtDesc.rc.top=Top+pRegion->FirstY;
	m_PrtDesc.rc.right=Right+pRegion->FirstX;
    m_PrtDesc.rc.bottom=Bottom+pRegion->FirstY;

	if(m_PrtDesc.rc.bottom > pRegion->bottom)
		m_PrtDesc.rc.bottom=pRegion->bottom;
	if(m_PrtDesc.rc.left > pRegion->right)
		m_PrtDesc.rc.left=pRegion->right;
	if(m_PrtDesc.rc.top > pRegion->bottom)
		m_PrtDesc.rc.top=pRegion->bottom;
	if(m_PrtDesc.rc.right > pRegion->right)
		m_PrtDesc.rc.right=pRegion->right;
	
	if(pRegion->FillColor > FILL_NONE)
		OldMode=m_PrtDesc.pDC->SetBkMode(TRANSPARENT); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		OldColor= SetColor(COLOR_WHITE); 		

	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       

	if(pRegion->FillColor > FILL_NONE)
		m_PrtDesc.pDC->SetBkMode(OldMode); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		SetColor(OldColor); 		

	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc:	Prints text clipped to a bounding rectangle. See the header for default
//		    parameters. Allows for newspaper like columns
//	params:  Calls user defined function for data
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::PrintColumn(CPrintRegion* pRegion,double Top,double Left,double Bottom,double Right,UINT flags,int PointSize,int ID)
{
	UINT	OldColor,OldMode;
	if(pUserFunc==NULL)
		return ;
	SaveState();
	m_PrtDesc.Text=pUserFunc(ID);
	ConvertArea(Top,Left,Bottom,Right);
	if(PointSize > 0)
		m_PrtDesc.PointSize=PointSize;
	if(flags != IGNORE_PARAM)
		m_PrtDesc.uTextFlags=flags;	       

	m_PrtDesc.rc.left=(int)Left+pRegion->FirstX;
    m_PrtDesc.rc.top=(int)Top+pRegion->FirstY;
	m_PrtDesc.rc.right=(int)Right+pRegion->FirstX;
    m_PrtDesc.rc.bottom=(int)Bottom+pRegion->FirstY;

	if(m_PrtDesc.rc.bottom > pRegion->bottom)
		m_PrtDesc.rc.bottom=pRegion->bottom;
	if(m_PrtDesc.rc.left > pRegion->right)
		m_PrtDesc.rc.left=pRegion->right;
	if(m_PrtDesc.rc.top > pRegion->bottom)
		m_PrtDesc.rc.top=pRegion->bottom;
	if(m_PrtDesc.rc.right > pRegion->right)
		m_PrtDesc.rc.right=pRegion->right;
	
	if(pRegion->FillColor > FILL_NONE)
		OldMode=m_PrtDesc.pDC->SetBkMode(TRANSPARENT); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		OldColor= SetColor(COLOR_WHITE); 		

	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       

	if(pRegion->FillColor > FILL_NONE)
		m_PrtDesc.pDC->SetBkMode(OldMode); 		
	
	if(pRegion->FillColor > FILL_LTGRAY)
		SetColor(OldColor); 		

	m_nNextPos=m_PrtDesc.m_NextCharPos;
	RestoreState();
}





////////////////////////////////////////////////////////////////////////////
//	DRAWING ROUTINES ( SHAPES )
////////////////////////////////////////////////////////////////////////////
//	Desc: Draws a line from point top,left to bottom,right
//	params: position, line size 1--x,flag is pen flags (see header)
//	Returns:
///////////////////////////////////////////////////////////////////////////
void	CPage::Line(int top,int left,int bottom,int right,int LineSize,UINT flag)
{     
	SaveState();
	if(flag != IGNORE_PARAM)
		m_PrtDesc.uPenFlags=flag;

	m_PrtDesc.rc.top=top;
	m_PrtDesc.rc.bottom=bottom;
	m_PrtDesc.rc.left=left;
	m_PrtDesc.rc.right=right;

	ThePrinter.DrawLine(&m_PrtDesc,LineSize);
	RestoreState();

⌨️ 快捷键说明

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