- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 团结融合携手共创北市大-研究发展处-台北市立大学.PDF
- 国内图书情报领域云计算研究的分析-图书情报知识-武汉大学.PDF
- 国内外新零售成功案例探秘.PDF
- 国家大学生创新创业训练计划项目结题-东南大学教务处.doc
- 国家考试经验分享-教育行政.ppt.ppt
- 国际商务职业素养能力训练彭月嫦ISBN978-7-5663-1967-8练习及答案.doc
- 国际版汽车行业的技术变革为我们公司的未来开辟了全新-grob-werke.PDF
- 图像处理软件AdobePhotoshop和AdobeIllustrator在昆虫绘图及图像.PDF
- 圆弧滑动有限元土坡稳定分析-中国科技论文在线.PDF
- 在梦想中酝酿梦想-KeepWalking梦想资助计画.PDF
最近下载
- DB13T 298.3-1997 结球甘蓝品种(系)区域试验调查项目及要求.pdf VIP
- 2025年新改版人教版七年级上册地理全册精编知识点 (背诵用).pdf
- 三菱FR-D740变频器使用手册(应用篇)-说明书.pdf
- 2025年国家开放大学《农村经济管理》形考作业三答案.docx VIP
- DB13T 298.3-1997 结球甘蓝品种(系)区域试验调查项目及要求.docx VIP
- DELTA台达ASDA-A2伺服驱动器使用手册.pdf
- 水工隧洞课件.pptx VIP
- 精益管理培训-拉动式生产方式.pdf VIP
- 部编版语文六年级上册第五单元【集体备课】.pptx VIP
- (完整版)华师版七年级下册数学知识点总结.pdf VIP
文档评论(0)