www.pudn.com > HReportTest.rar > HReportListPrint.h
// HReportListPrint.h: interface for the CHReportListPrint class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HREPORTLISTPRINT_H__3361B56E_8A73_4A84_B1BC_FFDE107D0E13__INCLUDED_)
#define AFX_HREPORTLISTPRINT_H__3361B56E_8A73_4A84_B1BC_FFDE107D0E13__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CHReportListPrint
{
public:
CHReportListPrint() { Init(); }
CHReportListPrint(CListCtrl* pList) { Init(); Attach(pList); }
virtual ~CHReportListPrint() { }
public:
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
public:
void Attach(CListCtrl* pList)
{
ASSERT(pList != NULL);
ASSERT_VALID(pList);
m_pList = pList;
}
// 设置边距
void SetMargin(int nLeftMargin = 4, int nHeadMargin = 8, int nLineSpace = 4)
{
ASSERT(nLeftMargin > 0);
ASSERT(nHeadMargin > 0);
ASSERT(nLineSpace > 0);
m_nLeftMargin = nLeftMargin;
m_nHeadMargin = nHeadMargin;
m_nLineSpace = nLineSpace;
}
// 设置页头字体
void SetHeadFont(const CString& strFaceName = _T("黑体"), int nFontSize = 16, BOOL bBold = TRUE)
{
ASSERT(!strFaceName.IsEmpty());
ASSERT(nFontSize > 0);
m_strHeadName = strFaceName;
m_nHeadSize = nFontSize;
m_bHeadBold = bBold;
}
// 设置正文字体
void SetPrintFont(const CString& strFaceName = _T("Tahoma"), int nFontSize = 10, BOOL bBold = FALSE)
{
ASSERT(!strFaceName.IsEmpty());
ASSERT(nFontSize > 0);
m_strPrintName = strFaceName;
m_nPrintSize = nFontSize;
m_bPrintBold = bBold;
}
// 设置页脚字体
void SetFootFont(const CString& strFaceName = _T("Tahoma"), int nFontSize = 10, BOOL bBold = FALSE)
{
ASSERT(!strFaceName.IsEmpty());
ASSERT(nFontSize > 0);
m_strFootName = strFaceName;
m_nFootSize = nFontSize;
m_bFootBold = bBold;
}
// 设置页头文字, 页脚文字和页码信息格式
void SetPageText(const CString& strHead,
const CString& strFoot = _T(""),
const CString& strFormat = _T(" %d / %d "))
{
m_strPageHead = strHead;
m_strPageFoot = strFoot;
m_strPageFormat = strFormat;
}
protected:
virtual CSize PrintListFoot(CDC * pDC, CRect & rcPage, BOOL bCalc);
virtual CSize PrintListHead(CDC * pDC, CRect & rcPage, BOOL bCalc);
virtual CSize PrintPageFoot(CDC * pDC, CRect & rcPage, const int nPage, const int nMaxPage, BOOL bCalc);
virtual CSize PrintPageHead(CDC * pDC, CRect & rcPage, BOOL bCalc);
void SubtractMargin(CDC * pDC, CRect &rc);
void CreateFontX(CFont& font, CDC* pDC, const CString &strFont,
int nSize, BOOL bBold = FALSE);
void Init()
{
m_pList = NULL;
m_nItemsOfPage = 0;
m_nFootHeight = 0;
m_nLeftMargin = 4;
m_nHeadMargin = 8;
m_nLineSpace = 16;
m_strPageHead = _T("");
m_strPageFoot = _T("");
m_strPageFormat = _T(" %d / %d ");
m_nHeadSize = 16;
m_strHeadName = _T("黑体");
m_bHeadBold = TRUE;
m_nPrintSize = 10;
m_strPrintName = _T("Tahoma");
m_bPrintBold = FALSE;
m_nFootSize = 10;
m_bFootBold = FALSE;
m_strFootName = _T("Tahoma");
}
protected:
CListCtrl* m_pList;
int* m_pDx; // 列坐标
int* m_pFormat; // 列对齐方式
char** m_pColTitle; // 列标题
int m_nItemsOfPage; // 每页打印的行数
int m_nLeftMargin, m_nHeadMargin, m_nLineSpace;
int m_nFootHeight;
CString m_strPageHead, // 页头文字
m_strPageFoot, // 页脚文字
m_strPageFormat; // 页码信息格式
CFont m_fontPrint, m_fontHead, m_fontFoot; // 字体
CSize m_sizePrint, m_sizeHead, m_sizeFoot; // 字体创建后的大小
int m_nPrintSize, m_nHeadSize, m_nFootSize; // 创建字体的大小
BOOL m_bPrintBold, m_bHeadBold, m_bFootBold;
CString m_strPrintName, m_strHeadName, m_strFootName; // 字体名称
};
#endif // !defined(AFX_HREPORTLISTPRINT_H__3361B56E_8A73_4A84_B1BC_FFDE107D0E13__INCLUDED_)