中南大学数学院大三年级面向对象实验报告.doc_第1页
中南大学数学院大三年级面向对象实验报告.doc_第2页
中南大学数学院大三年级面向对象实验报告.doc_第3页
中南大学数学院大三年级面向对象实验报告.doc_第4页
中南大学数学院大三年级面向对象实验报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南大学 面向对象程序设计 上机内容 鼠标绘图、菜单设计、对话框 学生姓名 学 号 专业班级 指导老师 实验内容一: 鼠标绘图基本要求:使用mfc编写一个实现鼠标绘图功能的程序。实现: 利用OnLButtonDown、OnLButtonUp和OnMouseMove函数,实现鼠标画图功能。鼠标点击后激发OnLButtonDown,用m_bMouseDown记录鼠标状态。按下鼠标后记录鼠标当前位置,鼠标移动后激发OnMouseMove函数进行绘图。当松开鼠标,OnMouseMove记录当前位置,绘制完毕。实验思路鼠标绘图,利用OnLButtonDown、OnLButtonUp和OnMouseMove函数,实现鼠标画图功能。鼠标点击后激发OnLButtonDown,用m_bMouseDown记录鼠标状态。按下鼠标后记录鼠标当前位置,鼠标移动后激发OnMouseMove函数进行绘图。当松开鼠标,OnMouseMove记录当前位置,绘制完毕。void 鼠标绘制View:MouseDraw(void)if(!m_PntList.GetCount ()return;CPoint Pnt;Pnt=m_PntList.GetHead ();CDC* pDC=GetDC();pDC-MoveTo(Pnt);POSITION pos=m_PntList.GetHeadPosition();while(1)Pnt=m_PntList.GetNext (pos);pDC-LineTo (Pnt);if(pos=NULL)break;void 鼠标绘制View:OnLButtonUp(UINT nFlags, CPoint point)/ TODO: 在此添加消息处理程序代码和/或调用默认值if(!m_MouseDraw)return;if(GetCapture()!=this)return;CClientDC dc(this);dc.MoveTo (m_PrePnt);dc.LineTo (point);m_PrePnt=point;m_PntList.AddTail(point);ReleaseCapture();CView:OnLButtonUp(nFlags, point);void 鼠标绘制View:OnLButtonDown(UINT nFlags, CPoint point)/ TODO: 在此添加消息处理程序代码和/或调用默认值if(!m_MouseDraw)return;SetCapture();m_PrePnt=point;m_PntList.AddTail(point);CView:OnLButtonDown(nFlags, point);void 鼠标绘制View:OnMouseMove(UINT nFlags, CPoint point)/ TODO: 在此添加消息处理程序代码和/或调用默认值if(!m_MouseDraw)return;if(GetCapture()!=this)return;CClientDC dc(this);dc.MoveTo (m_PrePnt);dc.LineTo (point);m_PrePnt=point;m_PntList.AddTail(point);CView:OnMouseMove(nFlags, point);运行结果如下:实验二:简单计算器的实现基本要求:使用mfc编写一个基于对话框的简单的实现加减乘除功能的计算器。实现:主要添加四个按钮 + * / 对应地为每个按钮设定一个处理函数。添加的变量和函数:private:double m_number1;double m_number2;double m_number3;public:afx_msg void OnBnClickedButtonAdd();afx_msg void OnBnClickedButtonRed();afx_msg void OnBnClickedButtonMul();afx_msg void OnBnClickedButtonDiv();afx_msg void OnBnClickedOk();主要实现代码:void CjisuanDlg:OnBnClickedButtonAdd()UpdateData(true);m_number3 = m_number1 + m_number2;UpdateData(false);/ TODO: 在此添加消息处理程序代码和/或调用默认值void CjisuanDlg:OnBnClickedButtonRed()UpdateData(true);m_number3 = m_number1 - m_number2;UpdateData(false);/ TODO: 在此添加消息处理程序代码和/或调用默认值void CjisuanDlg:OnBnClickedButtonMul()UpdateData(true);m_number3 = m_number1 * m_number2;UpdateData(false);/ TODO: 在此添加消息处理程序代码和/或调用默认值void CjisuanDlg:OnBnClickedButtonDiv()UpdateData(true);m_number3 = m_number1 / m_number2;UpdateData(false);/ TODO: 在此添加消息处理程序代码和/或调用默认值void CjisuanDlg:OnBnClickedOk()/ TODO: 在此添加消息处理程序代码和/或调用默认值CDialogEx:OnOK();实验三:菜单的创建基本要求: 创建一个菜单并能实现相应的功能实验思路一、创建菜单1、当对某菜单添加消息响应函数时。4个类的消息响应优先次序分别是:、View;、CDOC;、CMainFrame;、CWinAPP。2、消息分类:、标准消息:以WM_开头的消息,但不包括ON_COMMAND;、命令消息:ON_COMMAND(IDM_PHONE1, OnPhone1)菜单工具栏的消息;、通告消息:按钮,列表框发出的消息。CCmdTarget只能接受命令消息。而从CCmdTarget派生的CWnd可以接收命令消息,也可以接受标准消息。3、确定菜单的索引号:从0开始,分隔符也算数。弹出菜单(Popup Menu),一个子菜单只能有一个缺省菜单。一个菜单栏可以有若干个子菜单,一个子菜单又可以有若干个菜单项对菜单栏的子菜单由左至右建立从0开始的索引。对特定子菜单的菜单项由上至下建立了从0开始的索引。访问子菜单和菜单项均可以通过其索引或标识(如果有标识的话)进行。 / GetMenu()-GetSubMenu(0)-SetDefaultItem(5,TRUE);str.Format(x=%d,y=%d,GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK);/获得系统的菜单的位图的大小。/* SetMenu(NULL);/移除菜单CMenu menu;menu.LoadMenu(IDR_MAINFRAME);SetMenu(&menu);menu.Detach();*/增加菜单,此处detach(),如果是局部变量。4、菜单设为可用void CMainFrame:OnUpdateEditCut(CCmdUI* pCmdUI) if(2=pCmdUI-m_nIndex) pCmdUI-Enable();/当此菜单显示时,设为可用。二、实现单击右键出现菜单的功能1、Project-Add to Project-component and controls- VC components-Popup Menu OK。2、用TrackPopupMenu()实现。CMenu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论