实验一VC环境下实现图形显示.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一VC环境下实现图形显示.doc

PAGE PAGE 9 PAGE PAGE 9 实习基础 VC环境下实现图形显示 〖目标〗 1、了解如何用MFC函数来绘图; 2、熟悉MFC编程基本知识,包括消息映射,鼠标、菜单的使用; 3、熟悉类的定义、构造、编写; 4、熟悉数据的保存。 〖内容〗 用鼠标在窗口上绘制一组直线段; 自己实现直线类Cline,用来保存每条直线段的起点、终点,及自身的绘制; 实现菜单上的Undo功能 完成所绘图的保存。 〖实现步骤〗 一、建立绘图程序框架 开发绘图程序的第一步是使用MFC AppWizard来建立绘图程序的基本框架,步骤为: (1)从File菜单选择New菜单项,弹出New对话框。 (2)选择Projects选项卡,从项目类型列表框中选择MFC AppWizard(.exe),在Project name文本框中输入绘图程序的名字,这里设定为GraphExp,其他采用默认值。 (3)单击OK按钮,弹出MFC AppWizard-Step 1对话框,选择Single Document单选钮,表示要生成一个单文档(SDI)绘图程序。 二、在屏幕上画图 为了能用鼠标在屏幕上作图(画线),当然必须要控制鼠标。控制鼠标的方法就是对鼠标消息进行映射,在鼠标消息的处理函数中加上画线的代码,这是实现用鼠标在屏幕上画图的基本思路。由于在屏幕上(空白区)画图是与视图有关的,所以以下的具体步骤都是在视图类中进行的。 1、用ClassWizard映射鼠标消息 在视图类中用C1assWizard来映射鼠标消息的方法为: (1)从View菜单中选择ClassWizard命令,弹出MFC ClassWizard对话柜。 (2)选择Message Maps选项卡(一般默认为Message Maps选项卡)。 (3)从Class name下拉列表框选择要处理的类名为CGraphicsExpView。 (4)在Object IDs框选择要定义消息处理函数的对象为CGraphicsExpView。 (5)在Message框选择要映射的鼠标消息为WM_LBUTTONDOWN(单击鼠标左按 钮),然后单击Add Function按钮。注意,当选中某个消息时,对话框底部将显示该消息的简短描述。映射鼠标消息后,系统将创建消息处理函数并在Member functions框中列出相应的函数名。注意.以字母“W”标记的函数为消息处理函数。 (6)重复步骤(5),映射鼠标消息WM_MOUSEMOVE(移动鼠标到新的位置)和WM_LBUTTONUP(释放鼠标左按钮)。 在生成消息处理函数后,ClassWizard自动在头文件GraphicsExpView.h和实现文件GraphicsExpView.cpp中添加鼠标消息的处理函数声明、消息映射条目和消息处理函数的基本定义。 2、在视图类中添加数据成员 接着要向视图类中添加数据成员以便存放鼠标的状态、位置和光标形状。为此,打开文件GraphicsExpView.h,将以下语句添加到CGraphicsExpView类定义中: protected: int m_Drag; CPoint m_pntPrev; CPoint m_pntOrigin; 接着,打开文件GraphExpView.cpp,将以下代码添加到CGraphExpView类的构造函数中,以便初始化数据成员m_Drag: m_Drag=0; 3、添加消息处理函数代码 映射鼠标消息后,接着添加自己的消息处理代码,以便能在视图窗口中画直线。 (1)在消息处理函数CGraphExpView::OnLButtonDown的基本定义中添加以下代码: m_pntPrev = point; //保存鼠标光标的当前位置 m_pntOrigin = point; //保存画线的起始位置。 SetCapture(); //使随后的鼠标消息都被送往视图窗口 m_Drag = 1; //标志鼠标为拖动状态 RECT rect; GetClientRect(rect); //获取窗口客户区的坐标 ClientToScreen(rect); //将窗口客户区坐标转换为屏幕坐标 ClipCursor(rect); //将光标限定在窗口客户区内 (2)在消息处理函数CGraphExpView::0nMouseMove中添加以下代码: SetCursor(m_HCursor); //设置自定义光标(十字形) CClientDC dc(this); //创建设备上下文环境 if (m_Drag) { dc.SetROP2(R2

文档评论(0)

shiyouguizi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档