www.pudn.com > Visual C++课程设计案例精编--画图1 .rar > PainterView.h


// PainterView.h : interface of the CPainterView class 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_PAINTERVIEW_H__8316A581_527F_11D3_860D_9D4F82E55944__INCLUDED_) 
#define AFX_PAINTERVIEW_H__8316A581_527F_11D3_860D_9D4F82E55944__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "IconSet.h" 
 
class CPainterView : public CScrollView 
{ 
protected: // create from serialization only 
	CPainterView(); 
	DECLARE_DYNCREATE(CPainterView) 
 
// Attributes 
public: 
	CPainterDoc* GetDocument(); 
	void         Save();//处理文件保存 
	BOOL         AddIcon();//处理数据库记录添加 
	CIconSet  m_pSet; 
	 
	void         PickComponent(/*CDC *pDC*/);//拾取图元 
	BOOL         PickRectangle(RECTANGLENODE *rectanglenode);//检查点是否在矩形内 
	BOOL         PickEllipse(ELLIPSENODE *ellipsenode);//检查点是否在椭圆内 
	BOOL         PickLine(LINENODE *linenode);//检查点是否在直线上 
	BOOL         PickTriangle(RECT rect);//检查点是否在三角形内 
	BOOL         PickText(/*POINT point*/TEXTNODE *textnode); 
 
	void         MoveCompent();//移动图元 
	void         DrawTriangle(CDC *pDC,RECT rect);//画三角形 
	void         UndoMove(MOVENODE *move);//重复/恢复移动 
	void         UndoPaste(PASTENODE *paste);//重复/恢复粘贴 
	void         UndoCut(CUTNODE *cut);//重复/恢复剪切 
 
// Operations 
public: 
	int         ZoomFactor; 
	BOOL        bFileSaved;//文件是否保存过 
	//填充方式 
	//当前画刷颜色 
	COLORREF	CurColor; 
    //画刷填充形式 
	int			hatchIndex; 
 
	//当前画笔颜色,类型和宽度 
	COLORREF	PenCurColor; 
	int			penType; 
	int			penWidth; 
		 
	BYTE*       DrawType;//当前绘图种类 
	BOOL        DrawStep;//当前绘图步骤,0-未完成,1-完成 
	BOOL        bShiftDown;//当前是否按下了Shift键,主要用以判断是否多重选择 
 
	CString     fileName;//当前文件名 
	CString     path;//当前文件路径 
	//输出文本 
	CString     m_strText; 
 
	POINT       PrePoint;//原先鼠标位置 
	POINT       TempPoint;//暂存鼠标位置 
 
	BOOL        m_bDel;//是否能够删除 
	BOOL        m_bCopy;//是否能够拷贝 
	BOOL        m_bPaste;//是否能够粘贴 
	BOOL        m_bRedo;//是否能够恢复 
	BOOL        m_bUndo;//是否能够撤消 
	BOOL        m_IsSelected;//是否已经选择图元 
	BOOL        m_bGrid;//是否绘网点 
	BOOL        m_bNoTilt;//是否禁止绘制斜线 
 
	int         OppIndex;//图元索引 
 
	//处理编辑 
	BOOL     m_bModify;//是否处于编辑状态 
	BOOL     m_bIsRect; 
	int      m_nModifyIndex;//当前所调整的点索引 
	POINT    *m_pModifyPoint;//当前所调整的点的坐标 
	POINT    *m_pModifyPoints[4]; 
	int      *m_nSnapIndex; 
	int      m_nModifyStep; 
	PENTYPE  *m_ModifyPen; 
	CPtrList SnapList;//储存当前被选图元的坐标和索引的链表 
 
	void EnterModifyMode(); 
	void LeaveModifyMode(); 
	void DrawSnapPoint(CDC *dc,int index,/*CPoint point*/POINT *pPoints); 
	void DrawCurSnap(); 
	void DrawSnapList(); 
	void DrawModifyRec(CClientDC *DC); 
	void RectToPoints(RECT rect,POINT *point); 
 
protected: 
	LINENODE       *linenode;       //直线图元结构 
	RECTANGLENODE  *rectanglenode;  //矩形图元结构 
	ELLIPSENODE    *ellipsenode;    //椭圆图元结构 
	TRIANGLENODE   *trianglenode;   //三角形图元结构 
	FILLNODE       *fillnode;       //填充图元结构 
	TEXTNODE       *textnode;       //文本图元结构 
	MOVENODE       *movenode;       //移动操作结构 
	PASTENODE      *pastenode;      //粘贴操作结构 
	CUTNODE        *cutnode;        //剪切操作结构 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CPainterView) 
	public: 
	virtual void OnDraw(CDC* pDC);  // 处理重画 
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);//创建窗口 
	virtual void OnInitialUpdate(); 
	protected: 
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); 
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); 
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	virtual ~CPainterView(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
 
protected: 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CPainterView) 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//按下鼠标左键消息处理函数 
	afx_msg void OnColor();//选择填充颜色按钮处理函数 
	afx_msg void OnPenColor();//选择画笔颜色按钮处理函数 
	afx_msg void OnSelchangeLineWidth();//选择线宽组合框消息处理函数 
	afx_msg void OnSelchangeLineType();//选择线型组合框消息处理函数 
	afx_msg void OnSelchangeFillPattern();//选择填充模式组合框信息处理函数 
	afx_msg void OnDrawLine();//绘制直线工具栏按钮消息处理函数 
	afx_msg void OnDrawRectangle();//绘制矩形工具栏按钮消息处理函数 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);//松开鼠标左键消息处理函数 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);//移动鼠标消息处理函数 
	afx_msg void OnDrawEllipse();//绘制椭圆工具栏按钮消息处理函数 
	afx_msg void OnDrawFill();//绘制填充工具栏按钮消息处理函数 
	afx_msg void OnDrawSelect();//选择工具栏按钮消息处理函数 
	afx_msg void OnModifyMove();//移动工具栏按钮消息处理函数 
	afx_msg void OnUpdateEditDelete(CCmdUI* pCmdUI);//删除工具栏按钮更新处理函数 
	afx_msg void OnEditDelete();//删除工具栏按钮消息处理函数 
	afx_msg void OnEditCopy();//拷贝工具栏按钮消息处理函数 
	afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);//拷贝工具栏按钮更新处理函数 
	afx_msg void OnEditPaste();//粘贴工具栏按钮消息处理函数 
	afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);//粘贴工具栏按钮更新处理函数 
	afx_msg void OnEditCut();//剪切工具栏按钮消息处理函数 
	afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);//剪切工具栏按钮更新处理函数 
	afx_msg void OnEditRedo();//恢复工具栏按钮消息处理函数 
	afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);//恢复工具栏按钮更新处理函数 
	afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);//撤消工具栏按钮更新处理函数 
	afx_msg void OnEditUndo();//撤消工具栏按钮消息处理函数 
	afx_msg void OnDrawTriangle();//绘制三角形工具栏按钮消息处理函数 
	afx_msg void OnText();//绘制文本工具栏按钮消息处理函数 
	afx_msg void OnDestroy();//窗口销毁消息处理 
	afx_msg void OnDrawGrid();//绘制网点工具栏按钮消息处理函数 
	afx_msg void OnUpdateDrawGrid(CCmdUI* pCmdUI);//绘制网点工具栏按钮更新处理函数 
	afx_msg void OnUpdateDrawFill(CCmdUI* pCmdUI);//填充工具栏按钮更新处理函数 
	afx_msg void OnFileSave();//文件存储消息处理函数 
	afx_msg void OnFileSaveAs();//文件另存为消息处理函数 
	afx_msg void OnFileOpen();//文件打开消息处理函数 
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);//键盘按下消息处理函数 
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);//键盘松开消息处理函数 
	afx_msg void OnDrawNotilt();//禁止斜线工具栏按钮消息处理函数 
	afx_msg void OnUpdateDrawNotilt(CCmdUI* pCmdUI);//禁止斜线工具栏按钮更新处理函数 
	afx_msg void OnEnlarge(); 
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); 
	afx_msg void OnEditModify(); 
	afx_msg void OnUpdateEditModify(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateDrawEllipse(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateDrawLine(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateDrawRectangle(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateDrawTriangle(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateDrawSelect(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateText(CCmdUI* pCmdUI); 
	afx_msg void OnUpdateModifyMove(CCmdUI* pCmdUI); 
	afx_msg void OnViewRatio100(); 
	afx_msg void OnView100(); 
	afx_msg void OnView200(); 
	afx_msg void OnView25(); 
	afx_msg void OnView50(); 
	afx_msg void OnView75(); 
	//}}AFX_MSG 
	afx_msg void DoNothing(); 
	afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult); 
	DECLARE_MESSAGE_MAP() 
}; 
 
#ifndef _DEBUG  // debug version in PainterView.cpp 
inline CPainterDoc* CPainterView::GetDocument() 
   { return (CPainterDoc*)m_pDocument; } 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_PAINTERVIEW_H__8316A581_527F_11D3_860D_9D4F82E55944__INCLUDED_)