📄 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_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -