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

📄 cpage.cpp

📁 Windows下打印函数库
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		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)
{
	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;
	
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	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)
{
	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;
	
	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(CPrintRegion* pRegion,int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,int ID)
{
	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;
	
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	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)
{
	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;
	
	ThePrinter.PrintText(&m_PrtDesc,m_Spacing);                       
	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();
}	

////////////////////////////////////////////////////////////////////////////
//	Desc: Draw a line using parameters passed
//	params: position, line size 1--x,flag is pen flags (see header)
//	Returns:
///////////////////////////////////////////////////////////////////////////
void	CPage::Line(double top,double left,double bottom,double right,int LineSize,UINT flag)
{           
	SaveState();
	if(flag != IGNORE_PARAM)
		m_PrtDesc.uPenFlags=flag;
	ConvertArea(top,left,bottom,right);

	m_PrtDesc.rc.top=(int)top;
	m_PrtDesc.rc.bottom=(int)bottom;
	m_PrtDesc.rc.left=(int)left;
	m_PrtDesc.rc.right=(int)right;

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

////////////////////////////////////////////////////////////////////////////
//	Desc: Draw a rectangle using parameters passed
//	params: position, line size 1--x,flag is pen flags (see header)
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::Box(int top,int left,int bottom,int right,int LineSize,UINT Fillflags,UINT PenFlags)
{
	SaveState();
	if(Fillflags != IGNORE_PARAM)
		m_PrtDesc.uFillFlags=Fillflags;			
	if(PenFlags != IGNORE_PARAM)
		m_PrtDesc.uPenFlags=PenFlags;			

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

	ThePrinter.DrawRect(&m_PrtDesc,LineSize);
	RestoreState();
}

////////////////////////////////////////////////////////////////////////////
//	Desc: Draw a rectangle using parameters passed
//	params: position, line size 1--x,flag is pen flags (see header)
//	Returns:
///////////////////////////////////////////////////////////////////////////
void CPage::Box(double top,double left,double bottom,double right,int LineSize,UINT Fillflags,UINT PenFlags)
{
	SaveState();
	if(Fillflags != IGNORE_PARAM)
		m_PrtDesc.uFillFlags=Fillflags;			
	if(PenFlags != IGNORE_PARAM)
		m_PrtDesc.uPenFlags=PenFlags;			
	ConvertArea(top,left,bottom,right);

	m_PrtDesc.rc.top=(int)top;		
	m_PrtDesc.rc.bottom=(int)bottom;		
	m_PrtDesc.rc.left=(int)left;		
	m_PrtDesc.rc.right=(int)right;		

	ThePrinter.DrawRect(&m_PrtDesc,LineSize);
	RestoreState();
}
////////////////////////////////////////////////////////////////////////////
//	Desc: Draws a line from point top,left to bottom,right
//	params: CPrintRegion*, position, line size 1--x,flag is pen flags (see header)
//	Returns:
///////////////////////////////////////////////////////////////////////////
void	CPage::Line(CPrintRegion* pRegion,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=(int)top+pRegion->FirstY;		
	m_PrtDesc.rc.bottom=(int)bottom+pRegion->FirstY;		
	m_PrtDesc.rc.left=(int)left+pRegion->FirstX;		
	m_PrtDesc.rc.right=(int)right+pRegion->FirstX;		

	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;

⌨️ 快捷键说明

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