分类: C/C++
2008-03-10 21:31:25
class CPrintRX
{
public:
void MoveTo(int xCur, int yCur);
int GetStrSize(char *str, CSize& size);
int GetWidth();
void NewPage(); //开始新的一页
void EndPage(); //结束一页
int StartPage(); //开始一页
void SetDistance (int punkte);
int SetMargins(int Top, int Bottom, int Left, int Right);
int EndPrint(); //结束作业
int StartPrint(); //开始打印作业
int InitToPrint(char *PrinterName, int Copies);
//初始化
int SetFontFace(int iFont, int iFace);
int AddFont(LOGFONT *lf); //添加字体
int AddFont(CFont &newfont);
int DrawVLine(int x_up, int y_up, int x_bottom, int y_bottom, CPen &newpen);
int DrawVLine(int x_up, int y_up, int x_bottom, int y_bottom);
int DrawHLine(int x_left, int y_left, int x_right, int y_right, CPen & newpen);
int DrawHLine(int x_left, int y_left, int x_right, int y_right);
int DrawText(char *str, CRect& m_rt, int iFont = 0, int iFace = 0, int format = FORMAT_NORMAL);
int DrawText(char *str, int iFont = 0, int iFace = 0, int format = FORMAT_NORMAL);
CPrintRX();
virtual ~CPrintRX();
private:
CDC m_DC; // 打印的设备内容
HDC m_hPrinter; // 当给定了一个打印机的时候使用
CDC m_PrinterDC; // 没有指定打印机的时候使用
CFont* m_font[10][4];// 存放字体的的变量
int m_nFonts; // 现有的字体数
int m_iFont; // 使用的字体索引
int m_iFace[10]; // 使用的风格索引
int m_nCopies; // 打印的份数
CSize m_WorkSize; // 纸张的物理的宽度,以打印机的像素数为准
CRect m_Margins; // 使用范围,以屏幕的像素数为准
int m_yCur; // 当前的鼠标的位置Y
int m_xCur; // 当前的鼠标的位置X
int m_Abstand; // 行间距
int m_iPage; // 当前的页数
int m_LastErrNo; // 最后一个错误值
CPrintDialog *m_pPrintDlg;
// 使用打印机设置对话框
};
在使用时候流程是这样的:
CPrintRX m_Print;
m_Print.InitToPrint(NULL, 1); // 调用打印对话框,初始化得到设备内容
m_Print.StartPrint(); // 开始一个新的打印作业
m_Print.StartPage(); // 开始新的一页
CPen newPen; // 新建一个画笔
newPen.CreatePen (PS_SOLID, 3, RGB(0,0,0));
m_Print.DrawVLine(x_pos[0], y_pos[0], x_pos[0], y_pos[29], newPen);
// 画横线
m_Print.EndPage();
m_Print.EndPrint(); // 结束打印三、在测试程序中的打印效果如下