第四讲-基于文档视图的应用程序设计PPT课件_第1页
第四讲-基于文档视图的应用程序设计PPT课件_第2页
第四讲-基于文档视图的应用程序设计PPT课件_第3页
第四讲-基于文档视图的应用程序设计PPT课件_第4页
第四讲-基于文档视图的应用程序设计PPT课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第四讲基于文档视图的应用程序设计 19 04 2020 2 内容提要 VC的集成开发环境简介消息映射的基本原理菜单 工具栏 快捷键及其消息映射 19 04 2020 3 VC的编程环境简介 19 04 2020 4 使用应用程序向导 生成基于文档视图的应用程序生成基于对话框的应用程序 19 04 2020 5 19 04 2020 6 DeveloperStudio操作界面 开发 标题栏菜单栏工具栏状态栏 项目工作区 ClassViewResourceViewFileView编辑区输出框 19 04 2020 7 创建项目工作区时 将创建 一个项目工作区目录一个项目工作区文件 dsw 一个项目文件 dsp 一个工作区选项文件 opt P172 19 04 2020 8 要打开一个项目 只需要打开对应的项目工作区文件 dsw 19 04 2020 9 项目工作区窗口 ClassView 显示项目中定义的C 类ResourceView 显示项目中包含的资源FileView 显示包含在项目工作区中的文件 19 04 2020 10 ClassView 类成员变量成员函数访问类型publicprivateprotected 19 04 2020 11 RecourceView AcceleratorDialogIconMenuStringTableToolBarVersion 19 04 2020 12 FileView 查看文件增加文件删除文件 19 04 2020 13 打开应用程序 单击File OpenWorkSpace菜单项 单击 查找范围 下拉列表框 找到所要打开的项目的路径 再单击 文件类型 下拉列表框 设定文件类型为WorksSpaces dsw mdp 最后 双击项目工作区文件 dsw 即可打开相应的应用程序 19 04 2020 14 关闭应用程序 要关闭应用程序 必须将整个项目的所有文件关闭 选择File CloseWorkSpace 将应用程序的工作区全部关闭 19 04 2020 15 举例 在视图区输出 七彩前湖 美丽的家园 19 04 2020 16 voidCMyView OnDraw CDC pDC CMyDoc pDoc GetDocument ASSERT VALID pDoc pDC TextOut 0 0 七彩前湖 美丽的家园 19 04 2020 17 OnDraw CDC pDC 函数 是实现视图输出的重要函数 当程序窗口创建 移动 改变大小等情况时 窗口都需要重绘 系统会自动调用视图类的OnDraw 函数 19 04 2020 18 进阶 设置文本的字体颜色和给文本添加背景色 19 04 2020 19 voidCMyView OnDraw CDC pDC CMyDoc pDoc GetDocument ASSERT VALID pDoc pDC SetTextColor RGB 255 0 0 pDC SetBkColor RGB 0 0 0 pDC TextOut 100 100 helloworld 19 04 2020 20 举例 在视图区画圆 19 04 2020 21 voidCCircle moveView OnDraw CDC pDC CCircle moveDoc pDoc GetDocument ASSERT VALID pDoc TODO adddrawcodefornativedataherepDC Ellipse 0 0 50 50 画圆 19 04 2020 22 Ellipse 函数 Ellipse x1 y1 x2 y2 画椭圆函数 其参数是左上角和右下角的坐标 如果x2 x1 y2 y1 则所绘制的图形为圆 19 04 2020 23 消息映射的基本原理 鼠标消息及其处理键盘消息及其处理 19 04 2020 24 鼠标消息及其处理 19 04 2020 25 举例 在视图区点击鼠标左键 输出鼠标点击处位置的坐标 19 04 2020 26 设计步骤 1 为视图类添加一个CPoint类型的成员变量m pt12 在构造函数中对m pt1进行初始化3 为单击鼠标左键消息添加消息处理函数4 在OnDraw函数中添加相应的代码 COutput mouseView COutput mouseView m pt1 x m pt1 y 0 19 04 2020 28 voidCOutput mouseView OnDraw CDC pDC CStringstr str Format 鼠标位置 d d m pt1 x m pt1 y pDC TextOut 0 0 str 19 04 2020 29 voidCOutput mouseView OnLButtonDown UINTnFlags CPointpoint m pt1 point Invalidate CView OnLButtonDown nFlags point 19 04 2020 30 Invalidate 函数 该函数的作用是使原来的客户区失效 此时客户区需要重绘 会再次调用OnDraw 简单地说就是刷新视图 19 04 2020 31 在视图区移动鼠标 文字跟踪鼠标的位置移动并显示鼠标所在位置的坐标 鼠标跑到了 文字跟到哪里 举例 鼠标跟随 19 04 2020 32 1 为视图类添加一个CPoint类型的成员变量m pt12 在构造函数中对m pt1进行初始化3 为单击鼠标移动消息添加消息处理函数4 在OnDraw 函数中添加相应的代码 设计步骤 19 04 2020 33 CMouse withView CMouse withView TODO addconstructioncodeherem pt1 x m pt1 y 0 19 04 2020 34 voidCMouse withView OnMouseMove UINTnFlags CPointpoint TODO Addyourmessagehandlercodeherem pt1 point Invalidate CView OnMouseMove nFlags point voidCMouse withView OnDraw CDC pDC CMouse withDoc pDoc GetDocument ASSERT VALID pDoc TODO adddrawcodefornativedatahereCStringstr str Format 鼠标位置 d d m pt1 x m pt1 y pDC TextOut m pt1 x m pt1 y str 19 04 2020 36 举例 画直线程序 内容 按住鼠标左键时 并且鼠标移动时画线 当放开鼠标左键时绘图结束 19 04 2020 37 设计步骤 1 在视图类添加私有bool型成员变量m bDragging CPoint类型成员变量m ptOrigin 19 04 2020 38 2 在视图类构造函数中完成其初始化 CDraw lineView CDraw lineView TODO addconstructioncodeherem bDragging false 19 04 2020 39 voidCDraw lineView OnLButtonDown UINTnFlags CPointpoint TODO Addyourmessagehandlercodehereand orcalldefaultm ptOrigin point m bDragging true CView OnLButtonDown nFlags point 3 为按下鼠标左键时添加处理程序 voidCDraw lineView OnMouseMove UINTnFlags CPointpoint if m bDragging true CClientDCdc this dc MoveTo m ptOrigin dc LineTo point m ptOrigin point CView OnMouseMove nFlags point 4 为鼠标移动消息添加消息处理程序 19 04 2020 41 voidCDraw lineView OnLButtonUp UINTnFlags CPointpoint m bDragging false CView OnLButtonUp nFlags point 5 为释放鼠标左键时添加处理程序 19 04 2020 42 键盘消息及其处理 19 04 2020 43 举例 按键操作 voidCKey caseView OnKeyDown UINTnChar UINTnRepCnt UINTnFlags CClientDCdc this if nChar VK CAPITAL dc TextOut 100 50 CapLock键按下 if nChar VK CONTROL dc TextOut 100 100 CTRL键按下 if nChar 13 dc TextOut 100 150 ENTER键被按下 CView OnKeyDown nChar nRepCnt nFlags 19 04 2020 45 VK RETURNEnter 或者另一个 VK SHIFTShift 或者另一个 VK CONTROLCtrl 或者另一个 VK PAUSEPauseVK CAPITALCapsLockVK ESCAPEEscVK SPACESpacebar 虚拟键码 19 04 2020 46 VK LEFT左箭头VK UP上箭头VK RIGHT右箭头VK DOWN下箭头 虚拟键码 19 04 2020 47 举例 能上下左右移动的圆 程序描述 程序启动 在视图显示一个半径为25的圆 按上 下 左 右键 该圆分别向上 下 左 右移动 19 04 2020 48 1 给视图类添加CPoint类型的成员变量m pt2 在构造函数中对其进行初始化3 在视图类的OnDraw 函数中添加代码4 为视图类的WM KEYDOWN消息添加消息处理函数 设计步骤 19 04 2020 49 构造函数中完成初始化 CKey messageView CKey messageView TODO addconstructioncodeherem pt x 0 m pt y 0 19 04 2020 50 在视图类的OnDraw 函数中添加代码 voidCKey messageView OnDraw CDC pDC CKey messageDoc pDoc GetDocument ASSERT VALID pDoc TODO adddrawcodefornativedataherepDC Ellipse m pt x m pt y m pt x 50 m pt y 50 voidCCircle moveView OnKeyDown UINTnChar UINTnRepCnt UINTnFlags if nChar VK LEFT m pt x 左移Invalidate if nChar VK RIGHT m pt x 右移Invalidate if nChar VK DOWN m pt y 下移Invalidate if nChar VK UP m pt y 上移Invalidate CView OnKeyDown nChar nRepCnt nFlags 19 04 2020 52 举例 键盘鼠标消息综合举例 1 程序描述 如果把程序修改如果点击鼠标左键 圆半径加大 点击鼠标右键 圆半径减小 该如何编程 19 04 2020 53 1 给视图类添加CPoint类型的成员变量m pt2 在构造函数中对其进行初始化3 在视图类的OnDraw 函数中添加代码4 为视图类的WM KEYDOWN消息添加消息处理函数5 为点击鼠标左键消息添加消息处理函数6 为点击鼠标右键消息添加消息处理函数 19 04 2020 54 CCircle moveView CCircle moveView TODO addconstructioncodeherem pt x 200 m pt y 200 radius 50 19 04 2020 55 voidCCircle moveView OnDraw CDC pDC CCircle moveDoc pDoc GetDocument ASSERT VALID pDoc TODO adddrawcodefornativedataherepDC Ellipse m pt x m pt y m pt x radius m pt y radius 画圆 voidCCircle moveView OnKeyDown UINTnChar UINTnRepCnt UINTnFlags if nChar VK LEFT m pt x 左移Invalidate if nChar VK RIGHT m pt x 右移Invalidate if nChar VK DOWN m pt y 下移Invalidate if nChar VK UP m pt y 上移Invalidate CView OnKeyDown nChar nRepCnt nFlags 19 04 2020 57 voidCCircle moveView OnLButtonDown UINTnFlags CPointpoint TODO Addyourmessagehandlercodehereand orcalldefaultradius radius 5 Invalidate CView OnLButtonDown nFlags point 19 04 2020 58 voidCCircle moveView OnRButtonDown UINTnFlags CPointpoint TODO Addyourmessagehandlercodehereand orcalldefaultradius radius 5 Invalidate CView OnRButtonDown nFlags point 19 04 2020 59 限制其半径不让其比原半径还小 voidCCircle moveView OnRButtonDown UINTnFlags CPointpoint TODO Addyourmessagehandlercodehereand orcalldefaultif radius 50 radius radius 5 Invalidate CView OnRButtonDown nFlags point 19 04 2020 60 举例 键盘鼠标消息综合举例 2 如果把程序修改 如果点击鼠标左键 移动速度加快 点击鼠标右键 移动速度减慢 该如何编程 注意方向 19 04 2020 61 1 给视图类添加CPoint类型的成员变量m pt2 在构造函数中对其进行初始化3 在视图类的OnDraw 函数中添加代码4 为视图类的WM KEYDOWN消息添加消息处理函数5 为点击鼠标左键消息添加消息处理函数6 为点击鼠标右键消息添加消息处理函数 19 04 2020 62 CCircle moveView CCircle moveView TODO addconstructioncodeherem pt x 200 m pt y 200 step 2 19 04 2020 63 voidCCircle moveView OnDraw CDC pDC CCircle moveDoc pDoc GetDocument ASSERT VALID pDoc TODO adddrawcodefornativedataherepDC Ellipse m pt x m pt y m pt x 50 m pt y 50 画圆 voidCCircle moveView OnKeyDown UINTnChar UINTnRepCnt UINTnFlags if nChar VK LEFT m pt x m pt x step 左移Invalidate if nChar VK RIGHT m pt x m pt x

温馨提示

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

评论

0/150

提交评论