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

📄 datawin.h

📁 用户管理系统
💻 H
字号:
/*########################################################################
	【文件名】: 	DataWin.h 
	【名  称】:		DataWin 封装类.
	【版  本】:		1.0
	【作  者】:		梁均源
	【E-mail】:		KelvinSpace@citiz.net

  注意:必需保留以上信息!!!
  ########################################################################*/
#if !defined(AFX_DATAWIN_H__4CC547C1_6875_11D9_AF5D_0050BAB04A6A__INCLUDED_)
#define AFX_DATAWIN_H__4CC547C1_6875_11D9_AF5D_0050BAB04A6A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
////////////////////////////////////////////////////////
//安装COM在新工程App文件
//App::InitInstance()加入
//       CoInitialize(NULL);
//App::ExitInstance()加入
//       CoUninitialize();
////////////////////////////////////////////////////////
// DataWin.h : header file
//

#define PNS_DATABASE   0x000000010 //数据项目
//#define PND_MAX_NAME 128          //默认名称最大字数

///////////////////////////////////////////////////////////
//对双缓存的控制
//缓存状态被改变后,并不马上生效,它必须在OnPaint事件中
//进行状态转换,这样做是为了避免在执行OnPaint事件时,
//刚好删除m_bkBitamp画面会乱,也不知道有没有这种可能了
#define PNR_DELETERAM     -1    //删除缓存
#define PNR_DISABLEDRAM   0     //禁用缓存
#define PNR_CREATERAM     1     //创建缓存
#define PNR_USEDRAM       2     //正在使用缓存
#define PNR_REFURBISHRAM  3     //更新缓存
/*
/////////////////////////////////////////////////////////////////
//记录DataWin窗口内的所有控件
////////////////////////////////////////////////////////////////
typedef  struct tagDATAWINDOWVIEW
{
	HWND hWnd  ;                  //窗口句柄
	WNDPROC wpPrev;			      // 子类化之前的窗口回调函数地址
	DWORD dwStyle;                //窗口样式
	DWORD dwStyleEx;              //窗口扩展样式
	RECT Rect;                    //窗口大小
	int   nID;                    //窗口ID
    char szName[PND_MAX_NAME+1];  //窗口名称 
	char szType[PND_MAX_NAME+1];  //窗口类型
	struct tagDATAWINDOWVIEW * pNext;	// 指向下一个 CLASSXP 结构,这里采用单向链表结构
}DATAWINDOWVIEW, *PDATAWINDOWVIEW;
*/
/////////////////////////////////////////////////////////////////////////////
// CDataWin dialog
//*表示还没有实际使用
class CDataCell
{
public:
    Reset();
    CDataCell::CDataCell();
	DWORD dwCommand;            //命令类型
	UINT  nID;                  //控件ID 
	CDC   *pDC;                 //绘图指针
	int   nCol;                 //当前行号 
	int   nRow;                 //当前列号 *
	CRect Rect;                 //区域
	CString strName;            //名称
	COLORREF crTextColor;       //文字颜色   Button: 文字
	COLORREF crColor;           //前景颜色           按钮颜色
	COLORREF crBkColor;         //背景颜色           边框颜色
	COLORREF crBkColorParent;   //父窗口背景色,用来刷新 *
	int nBkMode;                //是否透明背景
    HWND hWnd;                  //窗口句柄
	CString strType;            //类型
	CString strText;            //显示文本
	DWORD dwStyle  ;            //控件样式
	DWORD dwStyleEx ;          //控件扩展样式
	DWORD dwState  ;            //控件状态
	CFont  *pFont;              //当前字体
	CPen   *pPen;               //当前绘笔
	void   *pDataEx;            //扩展数据指针 *
	DWORD  dwDataEx;            //扩展数据     *
	DOUBLE xPix;                //每mm对应象数
	DOUBLE yPix;                //每mm对应象数
	BOOL   bIsPrint ;           //是否打印状态
	float fZoomH;               //水平放大
	float fZoomV;               //垂直放大
	CString strValues;          //取值范围
};

#include "..\Ado\ADO.H"          //ADO类
#include "PreGraphic.H"         //实际绘图类
#include "PrePrint.H"           //打印机控制类
#include "PreDialog.H"          //枚举窗口控件
//加对vector说明
#include <iostream>
#include <vector>
using namespace std;

class CDataWin : public CDialog
{
// Construction
public:
	vector <CDataCell> m_dataPn;    //数据库数据缓存
	vector <CDataCell> m_data;      //数据库数据缓存
	vector <CDataCell> m_dataHead;  //IDE窗口结构页头
	vector <CDataCell> m_dataBody;  //IDE窗口结构表体
	vector <CDataCell> m_dataEnd;   //IDE窗口结构表脚
	vector <CDataCell> m_dataFoot;  //IDE窗口结构页尾
//显示、打印流程控制
//	BOOL    m_bIsPrint;              //正在打印
	BOOL    m_bRedraw;               //允许重绘
//	BOOL    IsPrint(){return m_bIsPrint;}  //当前是否打印状态 
	BOOL    OnPrint(char * sTitle,UINT nPrintDlg = 0);//打印输出函数
	virtual BOOL OnPrintStart();
	virtual void OnPrintEnd();
	virtual BOOL OnPageStart(BOOL bIsPrint = FALSE);
	virtual void OnPageEnd(BOOL bIsPrint = FALSE);
	virtual BOOL OnCellStart(CDataCell *pData, BOOL bIsPrint=FALSE);
	virtual void OnCellEnd(CDataCell *pData, BOOL bIsPrint=FALSE);
    void    OnInitCell(CDataCell *pData, BOOL bIsPrint = TRUE);
    int    OnPaintDoubleRam(CDC &dc);
    void    OnPaintBase(CDC &dc);    //实际显示
    void    OnPrintBase(CDC &dc);    //实际打印 
	UINT    m_nDoubleRam;            //双缓存
	CBitmap m_bkBitmap;              //缓存句柄
	CDC     m_MemDC;                 //绘图句柄
//-1表示删除0禁止1创建2已生成3更新
	BOOL    SetDoubleRam(BOOL bFlag=TRUE);//是否双缓存
    BOOL    GetDoubleRam();          //返回双缓存状态
	void    RefurbishDoubleRam();    //更新双缓存
//设置、返回显示或打印绘图类
    CPreGraphic *SetGraphic(CPreGraphic *p, BOOL bIsPrint=FALSE) ;//指定绘图类
    CPreGraphic *GetGraphic(BOOL bIsPrint=FALSE) ;                //返回当前绘图类

	CDataWin(UINT nIDD, CWnd* pParent = NULL);   // standard constructor
	CDataWin(CWnd* pParent = NULL);   // standard constructor
	void CreateInit(void);
	int m_nCellHeight;              //行高
	int m_nCell;                    //行内项目数
	int m_nCellMax;                 //最大行号
	int m_nCellMaxPn;               //打印机最大行号
	int m_nCellRow;                 //当前行
	int m_nCellCol;                 //当前列
	int m_nCellID;                  //当前ID
	int m_nPage;                    //当前页
	int m_nPagePn;                  //打印机当前页
	int m_nPageMax;                 //最大页
	int m_nPageMaxPn;               //打印机最大页号

    int   m_nHead;               //表头高度
	int   m_nBody;               //表体高度
	int   m_nEnd;                //表脚高度
	int   m_nFoot;               //表尾高度
     
	CBrush   m_bkBrush;          //背刷
	COLORREF m_bkColor ;         //背景色
	COLORREF m_shadowColor;      //阴影色
	CPreGraphic *m_pGraphic;     //绘图类
	CPreGraphic *m_pGraphicPn;   //绘图类
	CPrePrint m_Print;          //控制打印机类
	int       m_nFrameW;         //虚拟显示时,左右边距
	int       m_nFrameH;         //上下边距
	CFont     m_Font;
// Dialog Data
	//{{AFX_DATA(CDataWin)
//	enum { IDD = _UNKNOWN_RESOURCE_ID_ };
	enum { IDD = 0};
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDataWin)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
//枚举窗口控件
//	PDATAWINDOWVIEW m_pDataWindow;  //窗口控件属性表链指针,枚举时使用
//    BOOL fnDelClassChild();         //删除表连
//    BOOL fnEnumControl();           //枚举窗口控件
//    static BOOL CALLBACK fnEnumWndProc(HWND hWnd, LPARAM lParam);//枚举返回函数
//    static PDATAWINDOWVIEW WINAPI fnCreateClassChild(HWND hWnd, void *lParam); //创建表连
//    static PDATAWINDOWVIEW fnGetClassChild(PDATAWINDOWVIEW pDataWindow, 
//		      HWND hWnd, char *szType = 0);//取表连

 	// Generated message map functions
	//{{AFX_MSG(CDataWin)
	afx_msg void OnPaint();
	afx_msg void OnDestroy();
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
public:
	void SetPageButton(CButton *pUp, CButton *pDown);
	void PageUp();
	void PageDown();
	CButton *m_pUp;
	CButton *m_pDown;
//翻页控制
	int  SetCurrentPage(int nPage, BOOL bIsPrint=FALSE) ;//设置当前页
	int  GetCurrentPage(BOOL bIsPrint=FALSE) ;//取当前页
    int  GetPageCount(BOOL bIsPrint=FALSE) ;//取总页数
//设置背景色
	BOOL SetBkColor(COLORREF crColor )	{ m_bkBrush.DeleteObject();m_bkColor=crColor;return m_bkBrush.CreateSolidBrush(crColor);}
	BOOL GetBkColor( )	{return m_bkColor;}

//初始化
	BOOL Init();               
	void InitBase();                 //初设纸张为A4
	BOOL Init4Control();             //从表连生成表格基本结构
//	virtual BOOL InitConnect();      //创建数据库连接
	virtual BOOL InitGraphic(void);  //初设绘图类
    void    ResetAll();              //清除所有变量

//数据库	
    CAdoConnection *m_pConnection;   //Ado数据库类
	CAdoRecordSet   m_RecordSet;     //Ado表类
	CString         m_strDefSQL;     //SQL
    CAdoConnection *SetConnect(CAdoConnection *pConnection);//指定数据库连接
//	void SetSQLText(CString &strSQL) {m_strDefSQL = strSQL;}
//	virtual BOOL Open(CString &strSQL);  //打开数据表
	BOOL UpdateRecord(BOOL bIsPrint = false);                 //从数据库中导入数据
	int Retrieve(LPCSTR pSQL, BOOL bMsg = true);
    BOOL  m_bSimple;                 //简单模式,一行一页
//打印
    BOOL SetPrinter(LPTSTR pszPrinterName); //设置输出打印机
	CString m_strPrinterName;               //当前输出打印机NULL表示使用默认打印机
//虚拟显示模式
	void SetPrintView(BOOL bPrintView=TRUE, 
		              int nWidth = 10, 
					  int nHeight =10);     //模拟显示
	BOOL GetPrintView(){return m_bIsPrintView;}
	BOOL m_bIsPrintView;                    
//坐标转换
    DOUBLE m_xPix;          //每mm横向象数
	DOUBLE m_yPix;          //每mm纵向象数
    int    m_xScroll;       //水平滚动象数
	int    m_yScroll;       //垂直滚动象数
    DOUBLE m_xZoom;         //水平缩放
	DOUBLE m_yZoom;         //垂直缩放
//显示RECT使用-象数,打印RECT使用-mm//////////////////
//打印时才将mm转换成象数
	CRect m_RectPage ;              //显示尺寸-象数
	CRect m_RectPrint;              //打印尺寸-mm
	BOOL SetPage(CString strName, BOOL bIsPrint = FALSE); //设置纸张类型
	BOOL SetPage(int nWidth, int nHeight, BOOL bIsPrint = FALSE);//指定纸张尺寸
///////////////////////////////////////////////////////////
//坐标转换计算
	void CalMulRect(LPRECT pRect,double xPix, double yPix);
    int  CalMulInt(int x, double dbPix);
	void CalSize(CRect rect,DOUBLE xPix, DOUBLE yPix, BOOL bIsPrint = FALSE);  //计算页数等
    void CalScrollbar();
    int GetScrollV(int yPos);
    int GetScrollH(int xPos);
    void GetPageRect(RECT *pRect);
//绘图函数
	void DrawBack(CDC &dc); //绘背景
    void DrawHead(CDC &dc,BOOL bIsPrint=FALSE); //绘头
    void DrawBody(CDC &dc, int *nRow ,BOOL bIsPrint=FALSE); //绘表体
    void DrawBodyPn(CDC &dc, int *nRow ,BOOL bIsPrint=FALSE); //打印表体
    void DrawEnd(CDC &dc, int *nRow,BOOL bIsPrint=FALSE);  //绘表尾
    void DrawFoot(CDC &dc, int *nRow, BOOL bIsPrint=FALSE);  //绘表尾
//其它
    BOOL Construe(CDataCell *pCell, char *p);//语法分析

};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DATAWIN_H__4CC547C1_6875_11D9_AF5D_0050BAB04A6A__INCLUDED_)

⌨️ 快捷键说明

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