- 4
- 0
- 约1.36万字
- 约 57页
- 2017-11-12 发布于广东
- 举报
第三章 MFC编程 MFC(Microsoft Foundation Class) MFC类库是一个在应用程序中使用的相互关联的C++类的集合。MFC的本质就是一个包含了许多已经定义好的对象的类库。MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序。 图形设备接口 图形设备接口(graphics device interface,GDI)是Windows提供的一个抽象接口,用来完成所有图形的输出工作,GDI为Windows提供了所有的基本绘图函数。在GDI函数中,需要使用设备环境来作为一个参数。 GDI通过调用相应设备的驱动程序来实现函数的调用。这种机制实现了硬件无关性,即无需自己编写底层驱动程序代码,因为Windows本身已经包含了这些驱动程序。 设备环境 在Windows程序中,并不是把图形直接画到硬件上去,而是使用一个与硬件无关的设备环境(device context,DC)来表示逻辑的设备。 绘图模式 绘图的最终效果,如前景色、背景色等,可以通过设置绘图模式来进行改变。绘图模式实际上是指画笔的颜色以什么样的方式填充在已经有显示的设备上,两者怎样相结合。 GDI坐标系 GDI支持两种类型的坐标系,即逻辑坐标系和设备坐标系。 设备坐标系 设备坐标系是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向客户区坐标系以窗口客户区左上角为原点(0,0) ,下为正,坐标原点(0,0)不限定在设备显示区域的左上角。 根据设备坐标系的原点位置和用途可将其分为屏幕坐标系、窗口坐标系和客户区坐标系三种。 逻辑坐标 是系统用作记录的坐标系,它不针对任何具体的设备类型,是面向设备环境的。在实际显示图形对象时,Windows系统将根据坐标设置方式(映射模式),把逻辑坐标转换为设备坐标。 逻辑坐标系的映射模式可分为8种,它们的坐标特性如表3.2所示。所有映射模式的坐标原点均在设备输出区域(如客户区或打印区)的左上角。可以使用CDC::SetMapMode()函数设置新的映射模式;使用CDC::GetMapMode()函数获取当前的映射模式。 坐标之间的转换 在具体的编程过程中,需要根据情况在3种设备坐标之间、设备坐标与逻辑坐标之间进行相互转换。 MFC提供了CWnd::ClientToScreen()、CWnd::ScreenToClient()两个函数用于客户区坐标和屏幕坐标之间的转换; 提供了CDC::DPtoLP()和CDC::LptoDP()两个函数用于设备坐标与逻辑坐标之间的相互转换。 图形对象 画笔 :绘制直线和曲线要使用的GDI对象 画刷 :填充图形要使用的GDI对象 字体 :用于文字显示和打印的GDI对象 CDC类 :封装了大量文字与绘图函数的设备环境类 库存图形对象 :一些预定义的无需创建,可以直接将它们选入当前的设备环境中使用GDI对象, 称作库存(Stock)图形对象 画笔 画笔的操作 画刷 库存图形对象 资源 图标 位图 位图 的使用过程 字符串表 CSize类与CPoint类 CString类 在项目中新建类方法的比较 1.使用ClassWizard的方法适用于从MFC窗口类的派生情况,比较方便,但不能用于CWinApp等一般性的类. 2.使用插入新类的方法适用面较宽,但对一般性的MFC基类,需自己填写基类名称. 鼠标消息函数的使用 1.用参数point得到击键时鼠标的位置,可用于判断当前点是否落在某个区域.从而确定发生的事件。 2.用参数point和以前保留的位置信息m_point得到鼠标移动前、后的位置,从而为更新画面提供位置信息。 3.SetCapture()函数可以捕获鼠标,以保证以后的鼠标信息均发往本窗口,直至用ReleaseCapture()函数关闭鼠标捕获. 键盘消息函数 OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 键盘消息函数使用 键盘消息函数首先应使用参数nFlags判断按下的是否是组合键或扩展键 对于不同的虚拟键码,按照预先设计的功能,设计不同的代码。 可利用参数nRepCnt,加快速键盘的反映 定时器消息函数使用 定时器消息是系统消息, 用SetTimer()函数可设置一个定时器,并用参数nIDEvent作为定时器的标识,一旦计算机内的时钟过了一个规定的时间段,则系统会发出一个定时器消息消息,若在SetTimer()函数中指定了定时器消息处理函数lpfnTimer,则由该函数处理此定时器消息,否则由定时器消息处理函数
您可能关注的文档
- 供配电系统课件作者徐滤非第二章节例2-4章.ppt
- JSP应用开发教程课件作者温超第11章节企业邮箱模拟系统.ppt
- JSP应用开发教程课件作者温超第12章节基于struts的学生管理系统.ppt
- LabVIEW程序设计基础与提高课件作者张兰勇第1章节LabVIEW概述.ppt
- LabVIEW程序设计基础与提高课件作者张兰勇第4章节波形显示与文件操作.ppt
- 光纤通信第2版普通高等教育“十一五”国家级规划教材课件乔桂红光纤通信课件01章.ppt
- LabVIEW程序设计基础与提高课件作者张兰勇第5章节数据采集.ppt
- LabVIEW程序设计基础与提高课件作者张兰勇第6章节MATLAB程序设计基础.ppt
- 光纤通信第2版普通高等教育“十一五”国家级规划教材课件乔桂红光纤通信课件03章.ppt
- Linux网络操作系统课件作者赵军刘猛项目八FTP服务器的配置与管理.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- BSC-1100ⅡA2-X和1500A2生物安全柜产品使用说明书.pdf VIP
- 2026年江西青年职业学院单招职业技能考试必刷测试卷附答案.docx VIP
- 高中物理校本课程教材.docx VIP
- 南京医科大学-药理学-期末复习资料汇总.pdf VIP
- 2025年江西青年职业学院单招职业技能考试必刷测试卷附答案.docx VIP
- 北京航空航天大学《飞行器设计》期末考核试卷(含答案).docx VIP
- 第七章 part3幼儿园教职工配备标准 (暂行)(课件)2024年《学前教育政策法规》同步教学(高教版).pptx VIP
- 2024年山东职业学院高职单招(英语/数学/语文)笔试历年真题摘选含答案解析.docx
- 复旦大学保险公司财务管理第五章 保险公司财务比率分析.ppt VIP
- 患者十大安全目标(2025)PPT课件.pptx VIP
原创力文档

文档评论(0)