广西工学院课程设计用纸
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_newToolBar);
在CMFCDoc中添加的代码 CMFCDoc.h中 public: virtual ~CMFCDoc(); CPen m_penCur; // pen created according to CTypedPtrList
CStroke* CMFCDoc::NewStroke() {//D??¨newStrokeoˉêy POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); //获取视类的指针 //获取视类的画笔宽度和颜色 m_nPenWidth = pView->m_nLineWidth; m_color = pView->m_color; CStroke* pStrokeItem = new CStroke(m_nPenWidth,m_color); m_strokeList.AddTail(pStrokeItem); SetModifiedFlag(); // Mark the document as having been modified, for // purposes of confirming File Close. return pStrokeItem; }
BOOL CMFCDoc::OnNewDocument() {/新建空白文档 if (!CDocument::OnNewDocument()) return FALSE;
第 页 共 页
广西工学院课程设计用纸
// TODO: add reinitialization code here // (SDI documents will reuse this document) /新建空白文档就是把当前的数据全部删除掉 POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); int max = pView->m_graph.GetSize(); for(int i=0;i
///////////////////////////////////////////////////////////////////////////// // CMFCDoc serialization
void CMFCDoc::Serialize(CArchive& ar) {//获取视类的指针 POSITION pos = GetFirstViewPosition(); CMFCView *pView = (CMFCView*)GetNextView(pos); if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } m_strokeList.Serialize(ar); pView->m_graph.Serialize(ar); }
///////////////////////////////////////////////////////////////////////////// void CMFCDoc::InitDocument() {//初始化画笔和颜色 m_nPenWidth = 0; // default 2 pixel pen width m_color = RGB(0,0,0); m_penCur.CreatePen(PS_SOLID, m_nPenWidth, m_color); }
第 页 共 页
广西工学院课程设计用纸
void CMFCDoc::DeleteContents() {//删除保存了任意曲线的数据结构1 while (!m_strokeList.IsEmpty()) { delete m_strokeList.RemoveHead(); } CDocument::DeleteContents(); }
BOOL CMFCDoc::OnOpenDocument(LPCTSTR lpszPathName) {//打开一个新的文档 if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; return TRUE; }
CPen* CMFCDoc::GetCurrentPen() {//返回画笔 return &m_penCur; }
CMFCView类的代码 class CMFCView : public CView
{ CMFCView中添加的变量 public: DWORD m_DrawIndex; // 当前所选绘画类型的索引 CPoint m_random_start; // 任意曲线起点坐标 BOOL m_bDraw; //判断左键是否按下 CPoint m_start; //起点 CPoint m_end; //终点 CObArray m_graph; //保存图形 为了重绘 和保存 文件中去 COLORREF m_color; //保存画笔颜色 CFont m_font; //保存字体 CString m_strFontName; //保存字体名称 UINT m_nLineWidth; //保存线宽 int m_nLineStyle; //保存线形状 //--------------′打开文本文件使用的变量-------// BOOL m_txt; //点击′打开文本文件的标记 char *pBuf; //文本文件的中信息保存 //-------------′打开bmp图像文件用的一些变量----// BOOL m_bmp; //′打开位图文件的标记 BITMAPINFO * pBmpInfo; // BITMAPINFO结构指针
第 页 共 页
广西工学院课程设计用纸
BYTE* pBmpData; //DIB图像数据指针 BITMAPFILEHEADER BmpHeader; //位图文件头 BITMAPINFOHEADER BmpInfo; //位图信息 DWORD dataBytes; CStroke* m_pStrokeCur; // the stroke in progress CPoint m_ptPrev; // the last mouse pt in the stroke in progress
// Operations
CMFCView中添加的函数(包括消息响应函数)
public: float GetDistance(CPoint start, CPoint end);//获得两点坐标的距离的函数 void DrawArrowLine(CPoint start,CPoint end);//画带箭头线的函数 void DrawLine(CPoint start,CPoint end); /画直线函数 void DrawEllipse(CPoint start,CPoint end); /画椭圆函数 void DrawCircle(CPoint start,CPoint& end); //画圆函数 void DrawRect(CPoint start,CPoint end); //画长方形函数
protected:
// Generated message map functions
protected: 消息响应函数 //{{AFX_MSG(CMFCView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //鼠标左键按下消息响应函数 afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //鼠标左键弹起消息响应函数 afx_msg void OnMouseMove(UINT nFlags, CPoint point); //鼠标移动消息响应函数 afx_msg void OnRButtonDown(UINT nFlags, CPoint point); //鼠标右键按下消息响应函数 afx_msg void OnDrawChange(WORD nID); //选择绘画类型索引 afx_msg void OnUpdateOperDrawChange(CCmdUI * pCmdUI); afx_msg void OnEditUndo(); //点击 撤消 消息响应函数 afx_msg void OnClear(); //点击 清空 消息响应函数 afx_msg void OnSetLineStyleWidth(); //点击 设置线宽线型 消息响应函数 afx_msg void OnSetFont(); //点击 设置字体 消息响应函数 afx_msg void OnSetColor(); //点击 设置颜色 消息响应函数 afx_msg void OnOpenTxt(); //点击 打开文本文件 消息响应函数 afx_msg void OnOpenBmp(); //点击 打开bmp图像文件 消息响应函数 afx_msg void OnOpenWav(); //点击 打开wav音频文件 消息响应函数 //}}AFX_MSG DECLARE_MESSAGE_MAP()
第 页 共 页
广西工学院课程设计用纸
};
CMFCView.cpp实现文件中添加的代码 CMFCView::CMFCView()//在构造函数中 初始化一些变量 { // TODO: add construction code here m_bDraw = false;//左键按下标志 m_nLineStyle = 0;//线形状 m_nLineWidth = 1;//线宽 m_DrawIndex = 0;//绘画类型索引 0的画 为鼠标 m_color = RGB(0,0,0);//初始化画笔颜色 }
void CMFCView::OnDraw(CDC* pDC)//在OnDraw函数中添加的代码 { CMFCDoc* pDoc = GetDocument();
//---------------------重绘时显示任意曲线-----------------------------------// CTypedPtrList
//-------------------重绘时显示保存在m_graph中的图形------------------// int pCount = m_graph.GetSize(); for(int j=0;j
//------------------------以下代码用于 绘制有橡皮条功能的图形----------------// if(m_bDraw == true) { switch(m_DrawIndex) { case 1: DrawLine(m_start,m_end); break; case 3: DrawArrowLine(m_start,m_end); break;
第 页 共 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MFC绘图版 软件说明书(3)在线全文阅读。
相关推荐: