Visual-C++程序设计与应用教程(上)ppt教学教材

PPT
  • 阅读 66 次
  • 下载 0 次
  • 页数 224 页
  • 大小 2.211 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Visual-C++程序设计与应用教程(上)ppt教学教材
可在后台配置第一页与第二页中间广告代码
Visual-C++程序设计与应用教程(上)ppt教学教材
可在后台配置第二页与第三页中间广告代码
Visual-C++程序设计与应用教程(上)ppt教学教材
可在后台配置第三页与第四页中间广告代码
Visual-C++程序设计与应用教程(上)ppt教学教材
Visual-C++程序设计与应用教程(上)ppt教学教材
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 224
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】Visual-C++程序设计与应用教程(上)ppt教学教材.ppt,共(224)页,2.211 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2475.html

以下为本文档部分文字说明:

VisualC++程序设计与应用教程(上)pptVisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2主要内容第1章VisualC++开发环境第2章MFC应用程序第3章图形与文本第4章菜单、工具

栏与状态栏第5章对话框第6章Windows常用控件第7章文档与视图第8章打印编程第9章动态链接库编程第10章多线程编程第11章数据库编程第12章多媒体编程VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境31.1

集成开发环境窗口1.2AppWizard与ClassWizard1.3项目与项目工作区1.4集成开发环境的菜单栏1.5集成开发环境的工具栏1.6资源与资源编辑器第1章VisualC++开发环境VisualC++程序设计与应用教程1

2-ноя-22第1章VisualC++开发环境41.1集成开发环境窗口VisualC++开发环境是一个基于Windows操作系统的可视化、面向对象的集成开发环境。进入VisualC++集成开发环境:➢直接双击桌面MicrosoftVisualC++图标,进入

VisualC++IDE➢单击【开始】|【程序】菜单,选择MicrosoftVisualStudio6.0中的MicrosoftVisualC++6.0菜单项,进入VisualC++6.0IDE。如下图所示。VisualC++程序设计与应用教程1

2-ноя-22第1章VisualC++开发环境5标题栏菜单栏工具栏项目工作区编辑区输出区VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境61.2AppWizard与ClassWizard1.2.1AppWizard利用应用

程序向导可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码。启动VisualC++,进入VisualC++IDE,从File菜单上选择New菜单项,此时将弹出New对话框,如下图所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC+

+开发环境74个选项卡VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境81.Files选项卡作用:创建文件VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境92.Projects选项卡

作用:创建项目VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境10【例1.1】利用应用程序向导AppWizard创建一个单文档应用程序Li1_1。(演示)VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环

境111.2.2ClassWizard利用ClassWizard可以为它建立新类、进行消息映射、增加类的成员变量、修改已存在的成员函数和成员变量等。启动ClassWizard的三种方法:➢选择View主菜单下的ClassWizard

菜单项➢直接按Ctrl+W快捷键➢当代码编辑窗口中有打开的文件时,可单击鼠标右键,在弹出的快捷菜单中选择“ClassWizard…”菜单项VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境12VisualC++程序设计与应用教程12-ноя-

22第1章VisualC++开发环境131.消息映射MessageMaps用于管理消息和成员函数之间的连接。其中的选项可以让用户添加消息响应函数、删除成员函数以及对成员函数进行编辑等。各选项的功能如下:Visu

alC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境14指出当前工程名称显示当前的类名,要将消息处理函数映射为哪个类的成员函数,就在这里选择哪个类表示当前所选中对象的ID号,包括能产生消息的菜

单项、对话框控件。表中的首项总是当前的类名消息列表列出当前类中已包含的成员函数。V表示是虚函数,W表示是Windows的消息响应函数添加新类添加消息响应函数删除Memberfunctions列表框中所选中的函数打开Memberfunctions框中所选中的函数并进行编辑Vi

sualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境152.为项目添加新类单击AddClass按钮会出现一个弹出式菜单,选择New菜单项打开NewClass对话框.输入新类的类名选择一个MF

C类作为新类的基类显示定义新类的文件名,可以通过Change按钮修改默认的文件名对于基于对话框的类,可从DialogID下拉框中选择一个对话框资源模板VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境161.3

项目与项目工作区在VisualC++集成开发环境中,把实现程序设计功能的一组相互关联的C++源文件、资源文件以及支撑这些文件的类的集合称为一个项目。项目是VisualC++IDE开发程序的基本单位。Vis

ualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境17VisualC++IDE以项目工作区来组织应用程序的项目。项目工作区含有工作区的定义和工程中所包含文件的所有信息。项目工作区窗格一般位于屏幕左侧,包含ClassView(类视图)、Res

ourceView(资源视图)及FileView(文件视图)3种视图。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境181、ClassView用于显示项目中包含的类。展开文件夹将显示项目中所有的类,包括系统生成的和用户自定义的。图标含义类

公有成员函数私有成员函数保护成员函数公有数据成员私有数据成员保护数据成员VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境192、ResourceView用于显示项目中所包含的资源。展开文

件夹可显示所有的资源类型。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境203、FileView用于显示项目中所包含的文件。展开文件夹后可以看到项目中所包含的文件。VisualC++程序设计与应用教程12-ноя-22第1

章VisualC++开发环境211.4集成开发环境的菜单栏VisualC++IDE中的菜单栏由File、Edit、View、Insert、Project、Build、Tools、Window和Help9个主菜单组成。VisualC++程序设计与应用教程1

2-ноя-22第1章VisualC++开发环境221.4.1File菜单主要包括一些与文件有关的操作命令。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境231.4.2Edit菜单主要

包括一些与文件编辑有关的操作命令,它的作用在于为用户提供了一种编辑当前打开文件的手段。在指定位置设定断点VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境241.4

.3View菜单用于改变窗口的显示方式和激活指定的窗口。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境251.4.4Insert菜单包括一些与添加有关的操作命令,用于向工程中插入类、资源、对象等。Visual

C++程序设计与应用教程12-ноя-22第1章VisualC++开发环境261.4.5Project菜单包括一些与工程管理有关的操作命令。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境271.

4.6Build菜单包括一些与建立可执行程序有关的操作命令,提供编译、链接、调试等功能。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境281.4.7Tools菜单

用于启动VisualStudio实用工具和定制VisualC++IDE界面。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境291.4.8Window菜单包括一些与窗口显

示有关的操作命令。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境301.4.9Help菜单包括有关VisualC++帮助的操作命令。VisualC++程序设计与应用教程12

-ноя-22第1章VisualC++开发环境311.5集成开发环境的工具栏VisualC++IDE的工具栏以停靠窗口的形式出现,工具栏的位置可以通过鼠标拖曳的方法来改变,并可以根据需要在显示与隐藏之间进行切换。VisualC++程序设计与应用教程12-ноя-22第1章

VisualC++开发环境32执行Tools菜单中的Customize菜单命令,打开Customize对话框,然后单击Toolbars标签,并根据需要在Toolbars列表中选择要放到工具栏上的按钮图标。Vis

ualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境33还可以在菜单栏或工具栏的空白处单击鼠标右键,然后在一个弹出式菜单中选择要显示或隐藏的工具。VisualC++程序设计与应用教程12-ноя-22第1章Visual

C++开发环境341.5.1Standard工具栏Standard工具栏中包括一些与文件和编辑有关的常用操作命令,每个按钮的功能与文件(File)、编辑(Edit)和查看(View)等主菜单中的某个菜单项对应。NewTextFileVisualC++程序设计与应用教程12-ноя-22第

1章VisualC++开发环境351.5.2BuildMiniBar工具栏包括了工程的选择、编译、链接和调试等操作命令,每个按钮的功能与编译和调试菜单中某个菜单项对应。Execute、Go、Insert/RemoveBreakpointCompile、Build、StopBu

ildVisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境361.5.3WizardBar工具栏对ClassView和ClassWizard中的命令进行快速访问,使类和成员函数的操作更加方便。VisualC++程序设计与应用教程12-ноя-2

2第1章VisualC++开发环境371.6资源与资源编辑器Windows资源用于创建程序的框架界面,包括快捷键(Accelerator)、位图(Bitmap)、光标(Cursor)、对话框(Dialog)、图标(Icon)、菜单(Menu)、串表(StringTable)、工具栏

(Toolbar)和版本信息(Version)等。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境381.6.1资源和资源符号VisualC++在内部使用资源符号来标识资源。每当创建一个新的资源或资源对象时,系统就会为其

提供一个默认的资源符号名称并赋予一个整数值。在同一项目中,资源符号不能重复。资源符号的命名通常用带有描述性的前缀来表示所代表的资源,如下表所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++

开发环境39VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境40某应用程序中定义的资源。被保存在resource.h文件中。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境411.6.2资源编辑器在Windows环境下

,资源是独立于程序源代码的,根据不同资源的特点,VisualC++提供了不同的可视化资源编辑器。创建或打开资源时,系统将自动打开相应的编辑器。1.创建资源通过在Insert菜单中选择Resource菜单项来创建新的资源。单击Resource菜单项,弹出InsertReso

urce对话框,如下图所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境42资源类型新建资源导入资源VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境432.编辑资源通过项目工作区窗口的ResourceVie

w视图来查看资源。在窗口中双击要查看的资源,即可打开相应的资源编辑器。使用资源编辑器可以查看资源,使用资源模板,导入、导出资源以及查看、设置资源的属性。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开

发环境44(1)图形编辑器主要用于绘制位图、图标、光标和工具条。双击ResourceView视图中的Icon图标资源或Bitmap位图资源,打开图形编辑器,如下图所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境

45选择图标大小规格实际图形放大图形图形工具栏颜色工具栏VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境46(2)串表(StringTable)编辑器运行一个Windows应用程序后,当鼠标指向菜单项和工具栏按钮

时,在底部状态栏将显示所指项的有关提示信息,串表就是这样一种资源字符串。使用串表编辑器可以对串表进行增加、删除及编辑等操作,如下图所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境47双击某项编辑串表串表属性对话框

双击空白添加串表VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境48(3)版本(Version)编辑器版本信息包括公司和产品的信息、语言、序列号、产品的操作系统、版权号和商标的声明。版本编辑器用于编辑上述信息,如下图所示。VisualC++程序设计与应用教程1

2-ноя-22第1章VisualC++开发环境49VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境50【例1.2】完善例1.1中的应用程序Li1_1,使用资源编辑器编辑图标、串表和版本信息。(结果如下图所示)16像素×16像素图标新标题栏

提示信息32像素×32像素图标新的版本信息VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境51第2章MFC应用程序概述2.1Windows应用程序概述2.2MFC应用程序框架2

.3消息映射与消息处理2.4程序调试2.5应用实例VisualC++程序设计与应用教程VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境522.1Windows应用程序概述Windows应用

程序运行于Windows操作系统上,与DOS应用程序有着本质的区别。所有的Windows应用程序都是由消息驱动的,消息处理是所有Windows应用程序的核心。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境532.1.1窗口窗

口是用户界面中最重要的部分。它是屏幕上与一个应用程序相对应的矩形区域,是用户与产生该窗口的应用程序之间的可视界面。标题栏菜单栏编辑区垂直滚动条水平滚动条最小化按钮最大化按钮关闭按钮VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境542.1.2消息和事件Wi

ndows是一个基于事件的消息驱动系统,Windows应用程序是按照“事件→消息→处理”非顺序的机制运行的。所谓消息,就是用于描述某个事件发生的信息,而事件是对于Windows的某种操作。事件是因,消息是果,事件产生消息,消息对应事件。所谓消息的处理,其实质就是事件的处理。当有某个事件(如单击鼠标

、键盘输入和执行菜单命令等)发生时,Windows会根据具体的事件产生对应的消息,并发送到指定应用程序的消息队列。应用程序从消息队列中取出消息,并根据不同的消息进行不同的处理。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发

环境552.1.3基本数据类型Windows编程中常用的基本数据类型的别名。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境56VisualC++程序设计与应用教程12-ноя-22第1章Visual

C++开发环境572.1.4句柄句柄是Windows编程的基础,所谓句柄就是Windows使用的一种无重复整数。句柄主要用来标识应用程序中的一个对象,如窗口、实例、菜单、内存、输出设备、控制或文件等。Windows常见的公用句柄类型如下表所示:VisualC++程序设计

与应用教程12-ноя-22第1章VisualC++开发环境58VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境59由于对应的MFC类已对句柄进行了封装,大多数情况下不再需要访问句柄。VisualC++程序设计与应用教

程12-ноя-22第1章VisualC++开发环境602.2MFC应用程序框架下面通过一个实例介绍利用MFCAppWizard[exe]创建应用程序框架的步骤。2.2.1创建MFC应用程序框架VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境61

【例2.1】编写一个SDI单文档应用程序Li2_1,程序运行后,通过消息框输出“这是一个单文档应用程序!”的提示信息。(1)选择File菜单下的New菜单项,系统弹出New对话框。单击输入工程名保存文件路径默认VisualC++程序设计与应用教程12-ноя-22第1章Visua

lC++开发环境62单文档界面(SDI)应用程序。应用程序运行时,只能打开一个文档。多文档界面(MDI)应用程序。应用程序可以同时打开多个文档。基于对话框的应用程序。应用程序将显示一个简单的对话框来处理用户的输入,(2)MFCAp

pWizard-Step1对话框主要用于选择应用程序类型。AppWizard可以创建3种类型的应用程序框架。语言种类是否支持文档/视图结构VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境63(3

)MFCAppWizard-Step2of6对话框中主要用于选择应用程序所支持数据库方式。不包含任何数据库支持包含最低限度的数据库支持创建对应表的一个数据库类和一个视图类,不附加标准文件支持创建对应表的一个数据库类和一个视图

类,并附加标准文件支持VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境64(4)在MFCAppWizard-Step3of6对话框中选择应用程序所支持的复合文档类

型。不支持任何复合文档应用程序作为复合文档容器,包含可以链接或嵌入的ActiveX对象应用程序仅仅可以创建能够嵌入到其他应用程序中的文档,但是不能作为一个单独运行的应用程序应用程序可以单独运行,同时也可以作为一个对象

嵌入到其他应用程序中应用程序能够作为容器包含嵌入或链接的ActiveX对象,同时也能够作为一个可以嵌入到其他程序中的对象VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境65(5)在MFCAppWizard-Step4of6对话框中设置应用程序的外观特征。添

加工具栏自动生成状态栏添加打印和打印预览菜单项在帮助菜单中自动添加索引和使用帮助菜单项使应用程序的外观呈三维显示消息应用程序接口应用程序具有TCP/IP通信功能传统风格工具条InternetExplorer风格工具条VisualC++程序设计与应用教程

12-ноя-22第1章VisualC++开发环境66(6)在MFCAppWizard-Step5of6对话框中设置应用程序的风格。创建标准的MFC应用程序创建类似于Windows资源管理器风格的应用程序在生成的程序框架的源

文件中加入注释不加入注释信息使用动态链接库使用静态链接库VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境67(7)在MFCAppWizard-Step6of6对话框中,可以设置向导生成的文件名和类名。设置类名设置

文件名VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境68(8)打开项目工作区中的ClassView类视图,单击CLi2_1View类左边的“+”展开视图类,双击打开OnDraw()函数,

并添加代码。voidCLi2_1View::OnDraw(CDC*pDC){CLi2_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornatived

atahereMessageBox("这是一个单文档应用程序!","消息框",MB_ICONEXCLAMATION|MB_OKCANCEL);}VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境69(9)选择Build菜单中的BuildLi2_1

.exe菜单项,对工程进行编译和链接,生成可执行文件。再选择Build菜单中的ExecuteLi2_1.exe菜单命令运行程序。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境70MFC应用程序框架结构类的继承

关系:2.2.2MFC应用程序框架结构类CCmdTargetCWinThreadCWndCDocumentCDocTemplateCWinAppCViewCFrameWndCMDIChildWndCMDIFrameWndCSing

leDocTemplateCMultiDocTemplateCObjectVisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境711.CObject类CObject是M

FC类库的根类,它几乎描述了所有MFC类的一些公共特性,并且给所有由它派生出的类提供了3种重要特性,即:串行化支持、运行时类信息支持以及诊断和调试支持。2.CCmdTarget类命令类CCmdTarget是CObject的子类,它是

MFC库中所有具有消息映射属性的类的公共基类。从CCmdTarget派生的类能在程序运行时动态创建对象和处理命令消息。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境723.CWinApp类应用程序类CWinApp是CWinThread的子类,封装了初始化、

运行、终止应用程序的代码。可以由此派生自己的应用类。4.CWnd类窗口类CWnd提供了MFC中所有窗口类的基本功能。从CWnd派生的类可以拥有自己的窗口,并对它进行控制。VisualC++程序设计与应用教程12-но

я-22第1章VisualC++开发环境735.CFrameWnd类CFrameWnd类是CWnd类的派生类。它是所有其他框架窗口类的基类,主要用来管理一个窗口。CFrameWnd类的对象是一个框架窗口,包括边框

、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。CFrameWnd类支持单文档界面,对于多文档界面,使用它的两个派生类CMDIFrameWnd和CMDIChildWnd。CMDIFrameWnd类用于MDI的主窗口,CMDIChildWnd类用于MDI的子窗口。VisualC++程序设计

与应用教程12-ноя-22第1章VisualC++开发环境746.CView类视图类CView是CWnd类的子类。视图类及其派生类用于管理框架窗口的客户区。7.CDocument类文档类CDocument负责装载和维护文档。文档包括应用程序的工作成果或环境设置数据等,可以是

程序需要保存的任何内容。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境75一个MFC应用程序并不直接操作上述类,而是以上述类为基类派生新的类,从而构建Windows应用程序的基本框架。例如,应用程序Li2_1

中的类与这些基类的派生关系:类名称基类说明CLi2_1AppCMainFrameCLi2_1ViewCLi2_1DocCWinAppCFrameWndCViewCDocument应用程序类框架窗口类视图类文档类VisualC++程序设计与应用教程12

-ноя-22第1章VisualC++开发环境761.应用程序向导生成的文件下面以例2.1中创建的应用程序Li2_1为例,介绍MFCAppWizard[exe]向导所生成的各类文件及功能。2.2.3MFC应用程序分析VisualC

++程序设计与应用教程12-ноя-22第1章VisualC++开发环境77(1)头文件与实现文件➢MainFrm.h和MainFrm.cpp:定义和实现窗口框架类CMainFrame。➢CLi2_1Doc.h和CLi2

_1Doc.cpp:定义和实现文档类CLi2_1Doc。➢CLi2_1View.h和CLi2_1View.cpp:定义和实现视图类CLi2_1View。➢CLi2_1.h和CLi2_1.cpp:定义和实现应用程序类CLi2_1App。➢Resourc

e.h:定义工程中所有资源标识符,给资源ID分配一个整数值。➢StdAfx.h和StdAfx.cpp:用于建立一个预编译的头文件CLi2_1.PCH和一个预定义的类型文件StdAfx.obj。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开

发环境78(2)资源文件➢Li2_1.rc和Li2_1.rc2:Li2_1.rc文件是程序所使用的所有Windows资源的列表。➢Li2_1.ico:应用程序的图标所使用的图标文件。➢Li2_1Doc.ico:应

用程序的文档图标文件。文档图标一般显示在多文档程序界面上。➢Toolbar.bmp:工具栏按钮的位图文件。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境79(3)项目工作区文件和工程文件➢Li2_1.dsw:保存当前工

作区所包含的工程的信息。➢Li2_1.dsp:包含当前工程的设置、工程中的文件等信息。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境80(4)其他文件➢Li2_1.clw:该文件是类信息文件。它保存了ClassWizard编辑现有类或增加新类时需

使用的类信息,同时还保存了创建、编辑消息映射和成员函数所需的信息。➢ReadMe.txt:该文件是工程自述文件。主要介绍所创建文件的内容和功能,以及添加用户代码、更改使用语言的方法。VisualC++程序设计与应用教程

12-ноя-22第1章VisualC++开发环境812.应用程序的执行过程➢启动:创建应用程序对象theApp、调用应用程序类的构造函数初始化对象theApp。➢应用程序框架调用MFC提供的AfxWinMain()主函数。➢AfxWinMain()主函数,首先通

过调用全局函数AfxGetApp()来获取theApp的指针pApp;➢然后通过该指针调用theApp的成员函数InitInstance()来初始化应用程序。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境82在应用程序的初始化过程中,同时还构造了文档模板,

产生最初的文档、视图和主框架窗口,并生成工具栏和状态栏。➢当InitInstance()函数执行完毕后,WinMain()函数将调用成员函数Run(),进入消息处理循环;➢函数Run()收到WM_QUIT消息。➢MFC首先调

用CWinApp类的成员函数ExitInstance();➢然后调用静态对象的析构函数;➢退出应用程序,将控制权交给操作系统。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境83消息对话框一

种简单的对话框,用户可以直接调用消息对话框函数来使用它,而不需要自己创建。VisualC++提供三个消息对话框函数,它们的原型为:intAfxMessageBox(LPCTSTRlpText,UINTnType=MB_OK,UIN

TnIDHelp=0);intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTnType);intCWnd::MessageBox(LPCTSTRlpText,LPCTSTRlpC

aption=NULL,UINTnType=MB_OK);VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境84VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境85VisualC++程序设计与应用教程12

-ноя-22第1章VisualC++开发环境862.2.4文档/视图结构文档/视图体系结构是MFC应用程序框架结构的基石,它定义了一种程序结构,这种结构利用文档对象保存应用程序的数据,依靠视图对象控制视图显

示数据,文档与视图的关系是一对多的关系,也就是说,文档中的数据可以以不同的方式显示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境87应用程序对象文档模板对象文档对象视图对象框架

窗口对象VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境882.3消息映射与消息处理Windows消息主要有3种类型:标准Windows消息、控件消息和命令消息。1.标准Windows消息➢除WM_COMMAND以外,所有以“WM_”

为前缀的消息都是标准Windows消息;➢由窗口类或视图类处理;➢都有默认的处理函数,它们在CWnd类中进行了预定义。2.3.1消息的类别及其描述VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境89标准的Windows消息又分为3类:键

盘消息、鼠标消息和窗口消息。(1)键盘消息键盘消息与键盘某个键的动作相关联。常见的键盘消息有以下几种。✓WM_KEYDOWN、WM_KEYUP:按下、释放非系统键产生的消息。✓WM_CHAR:输入非系统字符时产

生的消息。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境90(2)鼠标消息鼠标消息涉及到鼠标的单击、双击、拖动等。常用的鼠标消息有以下几种。✓WM_MOUSEMOVE:鼠标移动时产生的消息。✓WM_RBUTTONDOWN:鼠标右键按下时产生的消息。✓WM_L

BUTTONDOWN:鼠标左键按下时产生的消息。✓WM_LBUTTONDBLCLICK:鼠标双击时产生的消息。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境91(3)窗口消息窗口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等动作有关。在MFC

应用程序中,窗口消息是由视图类、窗口类及它们的派生类处理的。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境922.控件消息控件消息是指控件或其他子窗口向父窗口发送的WM_COMMAND消息。与其他标准的Windows消息

一样,控件消息也应该在视图类、窗口类中进行处理。但是,如果用户单击按钮控件时,发出的控件通知消息BN_CLICKED将作为命令消息来处理。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境933.命令消息命令消息是由菜单项、工具栏按钮、

快捷键等用户界面对象发出的WM_COMMAND消息。命令消息与其他消息不同,它可被更广泛的对象如文档、文档模板、应用程序对象、窗口和视图等处理。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境942.3.

2MFC消息映射机制➢MFC采用消息映射来处理消息;➢消息映射机制包括一组消息映射宏,用于把一个Windows消息和其消息处理函数联系起来。➢所有从CCmdTarget类派生出来的类都能够拥有自己的消息映射。➢与MFC消息映射机制有关的宏有以下3个:➢DECLARE_MESS

AGE_MAP()➢BEGIN_MESSAGE_MAP(MyClass,MybaseClass)➢END_MESSAGE_MAP()VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境9

5为了使用消息映射宏:◆首先在类定义的结尾用DECLARE_MESSAGE_MAP()宏来声明使用消息映射,该宏表示在为各个处理函数所写的类声明之后存在消息映射条目,这些函数是该类的成员函数。◆然后在类的实现源文件中用BEGIN_MESSAGE_MAP()和EN

D_MESSAGE_MAP()宏来定义消息映射。MFC应用程序MESSAG_MAP消息映射的形式如下:VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境96BEGIN_MESSAGE_MAP

(MyClass,MybaseClass)//{{AFX_MSG_MAP(MyClass)//ClassWizard维护消息映射宏的标记ON_...//MFC预定义消息映射宏ON_MESSAGE(message,memberFun)//用户自定

义消息映射宏//}}AFX_MSG_MAPEND_MESSAGE_MAP()其中,MyClass是拥有消息映射的派生类名,MybaseClass是其基类名。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境97【例2.2】利用ClassW

izard为例2.1中生成的应用程序Li2_1添加鼠标右键按下消息,即WM_RBUTTONDOWN消息,并为File菜单下的Open菜单项添加消息处理函数,分析ClassWizard类向导所进行的消息映射。VisualC++程序设计与应用教程12-ноя-22第1章V

isualC++开发环境982.3.3自定义消息处理自定义消息处理:定义消息名、分配ID值及完成消息映射。Windows将所有的消息值分为4段:➢0x0000~0x03FF段:用于Windows系统消息➢0x0

400~0x7FFF段:用于用户自定义的窗口消息➢0x8000~0xBFFF段:为Windows保留值➢0xC000~0xFFFF段:用于应用程序的字符串消息。VisualC++程序设计与应用教程12-ноя-22

第1章VisualC++开发环境99常量WM_USER(为0x0400)与第一个自定义消息值相对应,用户必须为自己的消息定义相对于WM_USER的偏移值,利用#define语句直接定义自己的消息,如下所示:

#defineWM_USERWM_USER+3;//自定义消息WM_USER也可以调用窗口消息注册函数RegisterWindowMessage()来定义一个Windows消息,由系统分配消息一个整数值。该函数原型为:

UINTRegisterWindowMessage(LPCTSTRlpString);其中参数lpString是要定义的消息名,调用成功后将返回该消息的ID值。VisualC++程序设计与应用教程12-ноя-22第

1章VisualC++开发环境100【例2.3】编写一个自定义消息应用程序,并添加WM_RBUTTONDOWN消息。当程序运行时,用户在视图窗口中单击鼠标右键,则调用自定义消息处理函数,输出文本“自定义消息WM_MYMESSAGE的处理函数被调用

!”。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1012.4程序调试程序调试分为源程序语法错误的修改和程序逻辑设计错误的修改两个阶段,编译器只能找出源程序的语法错误,程序的逻辑设计错误只能靠程序员利用调试工具来手

工检查和修改。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1022.4.1查找源程序中的语法错误语法错误分为:➢一般错误(error):出现该错误时将不会产生可执行程序;➢警告错误(warning):出现该错误时能够生成可执行程序,但程序运行

时可能发生错误,严重的warning错误还会引起死机现象。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境103如果程序有语法错误,则在执行编译、链接命令时,VisualC++编译器将在输

出窗口中给出语法错误提示信息,但链接错误提示信息不能给出错误发生的具体位置。在输出窗口中双击错误提示信息或按F4键可以返回到源程序编辑窗口,并通过一个箭头符号定位到产生错误的语句。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1042.4.2调试器为

了查找和修改程序中的逻辑设计错误,VisualC++IDE提供了重要的调试工具——Debug。单击Build|StartDebug菜单中的菜单项,可以启动Debug。VisualC++程序设计与应用教程12

-ноя-22第1章VisualC++开发环境105StartDebug子菜单中有Go、StepInto、RunToCursor及AttachtoProcess菜单项开始或继续调试程序,到某个断点、程序的结束或需要用户输入的地方停止程序执行到当前光标处

,相当于在光标处临时设置了一个断点单步执行程序的每一个指令,能进入被调用的函数内部将调试器与一个正在运行的进程相连接VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境106调试过

程开始后,Debug主菜单取代Build主菜单出现在菜单栏中,同时出现一个可停靠的调试工具栏和一些调试窗口。Debug菜单当前位置断点Variable窗口Watch窗口VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境107即使

源程序没有语法错误,但最后生成的可执行程序也没有像程序设计要求的那样运行,这类程序设计上的错误被称为逻辑设计错误或缺陷(bug)。跟踪调试程序是查找此类逻辑设计错误方法中最常采用的动态方法。跟踪调试的基本原理就是在程序运行过程的某一阶段观测程序的状态。而在一般情况下程序是连续运行的,所以我们

必须使程序在某一点停下来。2.4.3跟踪调试程序VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境108选择Edit菜单下的Breakpoints菜单项,显示Breakpoints对话框。1.设置断点设置断

点的3种方式:◆按位置◆按表达式的值◆按窗口消息VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1092.控制程序运行➢StepOver:运行当前箭头指向的代码(只运行一条代码)。➢S

tepInto:如果当前箭头所指的代码是一个函数的调用,则用StepInto进入该函数并进行单步执行。➢StepOut:如果当前箭头所指向的代码是在某一函数内部,用它可使程序运行至函数返回处。➢RuntoCursor:使程序运行至光标所指的代码处。VisualC++程序设

计与应用教程12-ноя-22第1章VisualC++开发环境1103.观察数据变化在调试过程中,可以通过Watch和Variables窗口查看当前变量的值。VisualC++程序设计与应用教程12-ноя-22第1章V

isualC++开发环境111【例2.4】编写一个SDI单文档应用程序Li2_4,求2~10中偶数的和,并在视图中输出计算结果。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境11

22.5应用实例编写一个单文档应用程序Sy2,程序运行后,首先在视图窗口中输入文本,然后通过键盘上的光标键控制该文本向左、向右、向上和向下4个方向移动。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开

发环境113第3章图形和文本输出VisualC++程序设计与应用教程3.1图形设备接口和设备环境3.2GDI对象CGdiObject3.3画笔和画刷的使用3.4处理文本3.5位图3.6应用实例VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1143.1

图形设备接口和设备环境3.1.1图形设备接口Windows提供了一个称为图形设备接口(GraphicsDeviceInterface,GDI)的抽象接口。GDI负责管理用户绘图操作时功能的转换,实现设

备无关性。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境115应用程序可以使用GDI创建3种类型的图形输出:矢量图形、光栅图形和文本。1.矢量图形矢量图形输出是指画线和填充图形,包括点、直线、曲线、多边形、扇形和矩形等。2.光栅图形光栅图形输出是指光栅图

形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。3.文本与DOS字符方式下输出文本不同,Windows中的文本是按图形方式输出的。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1

163.1.2设备环境Windows应用程序的输出不直接面向显示器或打印机等物理设备,而是面向一个称之为设备环境(DeviceContext,DC)的虚拟逻辑设备。设备环境DC,也称设备描述表或设备上下文。它是由GDI创建、用来代表设备连接的数据结构。DC的主要功能有以下几种:VisualC

++程序设计与应用教程12-ноя-22第1章VisualC++开发环境117(1)允许应用程序使用一个输出设备。(2)提供Windows应用程序、设备驱动和输出设备之间的连接。(3)保存当前信息,例如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。(4)

保存窗口剪切区域,限制程序输出到输出设备中窗口覆盖的区域。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1183.1.3设备环境类1.设备环境类CDC及其功能CObjectCDCCClientDCCMetaFileDCCPa

intDCCWindowDC所有设备环境类的基类,对GDI的所有绘图函数进行了封装用于响应窗口重绘消息的绘图输出,不仅可对客户区进行操作,还可以对非客户区进行操作代表窗口客户区的设备环境代表整个窗口的设备环境,包括客户区和非客户区代表Windows图元文件设备环境Visu

alC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1192.设备环境类CDC的一些常用函数VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环

境120VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1213.1.4颜色的设置Windows用COLORREF类型的数据存放颜色,它是一个32位整数。任何一种颜色都是由红、绿、蓝3种基本颜色组成的,COLORREF类型数据的低位字节存放红色强度值

,第2个字节存放绿色强度值,第3个字节存放蓝色强度值,高位字节为0,每一种颜色分量的取值范围为0~255。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境122MFC提供了RGB宏,用于设置

颜色,其使用形式为:RGB(byRed,byGreen,byBlue)其中参数byRed、byGreen和byBlue分别表示红、绿、蓝分量值(范围0~255)。下表列出了一些常用颜色的RGB值。VisualC++程序设计与应用教程12-ноя-

22第1章VisualC++开发环境123VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1241.传统的SDK获取设备环境的方法采用SDK方法编程,获取设备环境的方法有两种:(1)在WM_PAIN

T消息处理函数中通过调用API函数BeginPaint()获取设备环境,在消息处理函数返回前调用API函数EndPaint()释放设备环境。(2)如果绘图操作不是在WM_PAINT消息处理函数中,需要通过调用API函数GetDC()获取设备环境,调用API函

数ReleaseDC()释放设备环境。3.1.5获取设备环境VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1252.MFC应用程序获取设备环境的方法在一个MFC应用程序中获得DC的方法主要有两种:(1)接受一

个参数为指向CDC对象的指针;(2)声明一个MFC设备环境类的对象,并使用this指针为该对象赋值。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1263.1.6编程实例【例3.1】编写一个单文档的MFC应用程序Li3_

1,利用表3-2中的函数绘制几种常见的几何图形。当程序运行时,显示如图所示结果。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境127【例3.2】编写一个单文档的MFC应用程序Li3_2,使用CPaintDC类完成例3.1同样的功能。

VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境128【例3.3】编写一个基于对话框的MFC应用程序Li3_3,程序运行后,当用户在窗口中单击鼠标左键时,在窗口中绘制一个椭圆。VisualC++程序设计与应用教程12-ноя-22第1章V

isualC++开发环境129【例3.4】编写一个基于对话框的MFC应用程序Li3_4,使用CWindowDC类完成例3.3同样的功能。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开

发环境1303.2GDI对象类CGdiObjectGDI对象是Windows图形设备接口的抽象绘图工具。除了画笔和画刷,其他GDI对象还包括字体、位图和调色板。MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,

如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类,它们的继承关系如图所示。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境131CO

bjectCGdiObjectCBitmapCBrushCFontCPaletteCPenCRgn画笔。绘制对象的边框以及直线和曲线。画刷。填充一个封闭图形对象内部区域字体对象。用来绘制文本位图。装载和操作位图调色板。包含系统可用的色彩信息,是应用程序和彩色输出设备环境的接口

区域。用于设备环境(通常是窗口)内的区域操作VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1323.3画笔和画刷的使用VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1

333.3.1使用库存(stock)对象VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境134选择库存对象:➢使用SelectStockObject()函数如果选择成功,函数SelectStockObject()

将返回以前的CGdiObject对象的指针。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境135➢利用CGdiObject类的成员函数CreateStockObject()将GDI对象设置成指定的库存对象。声明一个GDI对象,调用成员函数Selec

tObject(),将与库存对象关联的GDI对象选入当前的设备环境,代码如下所示。CBrush*BrushOld,BrushNew;//关联库存画刷对象BrushNew.CreateStockObject(BLACK

_BRUSH);BrushOld=pDC->SelectObject(&BrushNew);VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境136【例3.5】编写一个单文档应用程序Li3_5,使用库存画笔和画刷在视图中绘制图形。VisualC+

+程序设计与应用教程12-ноя-22第1章VisualC++开发环境1373.3.2创建和使用自定义画笔如果要在设备环境中使用自己的画笔绘图,首先需要创建一个指定风格的画笔,然后选择所创建的画笔,最后还原画笔。

1.创建画笔创建画笔的方法有两种:VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境138(1)定义画笔对象时直接创建CPenPenNew(PS_DASH,1,RGB

(255,0,0));笔的样式线的宽度线的颜色(2)先定义一个没有初始化的画笔对象,再调用CreatePen()函数创建指定画笔。CPenPen;pen.CreatePen(PS_DASH,1,RGB(255,0,0));Vis

ualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境139VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1402.选择创建的画笔调用CDC类

的成员函数SelectOject(),将创建的画笔选入当前设备环境。选择新的画笔时应该保存以前的画笔对象。例如:CPen*PenOld;PenOld=pDC->SelectObject(&PenNew

);选择新画笔保存原来的画笔VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1413.还原画笔绘图完成后,调用CDC类的成员函数SelectOject()恢复设备环境以前的画笔工具,并通过调用CGdiObject类的成员函

数DeleteObject()来删除画笔,释放GDI对象所占的内存资源。例如:恢复设备环境DC中原来的画笔:pDC->SelectObject(PenOld);删除创建的画笔:PenNew.DeleteObject(

);VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境142【例3.6】编写一个单文档应用程序Li3_6,绘制不同样式、线宽及颜色的矩形。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开

发环境1433.3.3创建和使用自定义画刷包括三个步骤:➢创建画刷:先构造一个没有初始化的CBrush画刷对象,再调用CBrush类的初始化成员函数创建定制的画刷工具。类型不同的画刷使用不同的函数实现。➢选择创建的画刷➢还原画刷。CBrush类提供的创建函数中常用的有以下几个:Vis

ualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境144(1)创建指定颜色的实心画刷函数CreateSolidBrush()其原型为:BoolCreateSolidBrush(COLORREFcrColor);例如创建一个红色的实心画刷:CBrushbrus

h;brush.CreateSolidBrush(RGB(255,0,0));VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境145(2)创建阴影画刷函数CreateHatchBrush(

)其原型为:BoolCreateHatchBrush(intnIndex,COLORREFcrColor);参数nIndex用于指定阴影样式,它的值见下表。例如:创建一个具有水平和垂直交叉阴影线的红色画刷CBrushbrush;brush.CreateHatchBrush(HS_CR

OSS,RGB(255,0,0));VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境146画刷的阴影样式VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境147(3)创建位

图画刷函数CreatePatternBrush()采用8像素×8像素的位图。例如:CBitMapmybmp;mybmp.LoadBitMap(IDB_MYBMP);CBrushbrush;brush.Cre

atePatternBrush(&mybmp);先加载位图VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境148【例3.7】编写一个单文档应用程序Li3_7,绘制不同颜色、不同阴影形式的填充矩形。VisualC++程序设计与应用教程12-ноя-

22第1章VisualC++开发环境1493.4处理文本3.4.1设置文本显示属性在默认情况下输出文本时,字体颜色是黑色,背景颜色是白色,背景模式为不透明模式。通过调用CDC类成员函数重新设置字体颜色、背景颜色和文本对齐方式等文本显示属性,下表是文本属性显示的常用函数。Vi

sualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境150文本属性函数VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1511.设置背景模式SetBkMode()函

数原型为:intSetBkMode(intnBkMode);其中,nBkMode指定背景模式,其值是OPAQUE(不透明)或TRANSPARENT(透明)。VisualC++程序设计与应用教程12-ноя-

22第1章VisualC++开发环境1522.设置文本对齐方式SetTextAlign()函数改变文本对齐方式:UINTSetTextAlign(UINTnFlags);其中,nFlag为下表中列出的标志的组合。VisualC++程序设计与应用教程12-ноя-22第1章Visua

lC++开发环境153文本对齐标志VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1543.4.2设置字体字体也是一种GDI对象,字体对象的创建、选择、使用和删除

的步骤与其他GDI对象类似。CFont类提供的创建函数中常用的有以下几个:VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1551.CreatePointFont()BOOLCreatePointFont(intnPointSize,LPCTSTRlps

zFaceName,CDC*pDC=NULL);参数说明:nPointSize:字体大小,以1/10磅为单位;lpszFaceName:创建字体对象所使用的字体名称;pDC:指向一个设备环境对象。VisualC++程序设计与

应用教程12-ноя-22第1章VisualC++开发环境1562.CreateFontIndirect()BOOLCreateFontIndirect(constLOGFONT*lpLogFont);参数lpLogFont为指向LOGFONT结构的指针。

LOGFONT结构用来说明一种字体的所有属性。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1573.CreateFont()该函数包括大量参数,其原型为:BOOLCreateF

ont(intnHeight;intnWidth;intnEscapement;intnOrientation;intnWeight;BYTEbItalic;BYTEbUnderline;BYTEcStrikeOut;BYTEnCharSet;BY

TEnOutPreclsion;BYTEnClipPrecision;BYTEnQuality;BYTEnPitchAndFamily;LPCTSTRlpszFacename;)VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境158可以选择库存字体来重新

设置字体。当选择库存字体作为文本输出的字体时,无须创建字体对象,只需简单地调用成员函数CDC::SelectStockObject(),将库存字体对象选入设备环境。库存字体对象说明ANSI_FIXED_FONTANSI_VAR_FON

TSYSTEM_FONTSYSTEM_FIXED_FONTDEVICE_DEFAULT_FONTOEM_FIXED_FONTANSI标准的等宽字体ANSI标准的非等宽字体Windows默认的非等宽系统字体Windows等宽系统字体当前设备字体与OEM相关的等宽字体VisualC++程序设计

与应用教程12-ноя-22第1章VisualC++开发环境159【例3.8】编写一个单文档的应用程序Li3_8,采用不同的方法创建字体,并根据创建的字体输出不同的文本。VisualC++程序设计与应用教程12-ноя-22第1章V

isualC++开发环境1603.4.3格式化文本文本的显示是以像素为单位,在绘制任何文本之前,需要精确地知道文本的详细属性,如高度、宽度等,用来计算文本坐标。CDC类提供了几个文本测量成员函数:VisualC++程序设计与应用教程12-ноя-22第1

章VisualC++开发环境1611.GetTextExtent()获得所选字体中指定字符串的宽度和高度。CSizeGetTextExtent(LPCTSTRlpszString,intnCount);其中,

1pszString是字符串的指针,nCount是所包括的字符数。返回值CSize是包含两个成员的结构,cx是字符串的宽度,cy是字符串的高度。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1622.GetTextMe

trics()获得当前字体TEXTMETRIC结构的数据。BOOLGetTextMetric(constTEXTMETRIC*lpTextMetric);参数lpTextMetric为指向结构TEXTMETRIC的指针。TEXT

METRIC结构用来描述字体信息。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境163【例3.9】编写一个单文档的应用程序Li3_9,采用不同的格式输出文本串。VisualC++程序设计与应

用教程12-ноя-22第1章VisualC++开发环境1643.4.4常用文本输出函数MFCCDC类中常用的文本输出函数有以下几种:1.TextOut()该函数使用当前设定的字体、颜色、对齐方式在指定位置上输出文本。vitu

alBOOLTextOut(intx,inty,LPCTSTRlpszString,intnCount);或:BOOLTextOut(intx,inty,constCstring&str);其中,参数(x,y)指定输出文本串的开始

位置;参数lpszString和str为输出的文本串;参数nCount指定文本串的长度。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1652.DrawText()该函数在给定的矩形区域内输出文

本,并可调整文本在矩形区域内的对齐方式以及对文本行进行换行处理等。函数原型为:VirtualintDrawText(LPCTSTRlpszString,intnCount,LPRECTlpRect,UINTnFormat);或:intDrawText(const

CString&str,LPRECTlpRect,UINTnFormat);其中,参数lpszString和str为要输出的文本串,可以使用换行符“\n”;参数nCount指定文本串长度;参数lpRec

t指定用于显示文本串的矩形区域;参数nFormat指定如何格式化文本串。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1663.ExtTextOut()该函数的功能与TextOut

()相似,但可以根据指定的矩形区域裁剪文本串,并调整字符间距。函数原型为:VirtualBOOLExtTextOut(intx,inty,UINTnOptions,LPCRECTlpRect,LPCTSTRlpszString,UINTnCount

,LPINTlpDxWidths);或:BOOLExtTextOut(intx,inty,UINTnOptions,LPCRECTlpRect,constCString&str,LPINTlpDxWidths);4.Tabbed

TextOut()该函数的功能与TextOut()相似,但可按指定的制表间距扩展制表符。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境167【例3.10】编写一个单文档的应用程序Li3_10,采用不同的函数输出文本串。Vi

sualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1683.5位图位图是一个由位构成的图像,它是由一系列0和1排列而成的点阵结构。Windows支持两种不同形式的位图:➢设备相关位图(DeviceDependentBitma

p,DDB)➢设备无关位图(DeviceIndependentBitmap,DIB)VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1693.5.1设备相关图(DDB)和设备无关图(DIB)DDB又称GDI位图,它依赖于具体设备,只能存在于内存中

。DIB是不依赖硬件的位图,因为它包含了创建DIB位图时所在设备的颜色格式、分辨率和调色板等信息。DIB位图不能直接显示,需要先转换为与设备相关的格式,再由具体的设备显示。DIB位图通常以BMP后缀名的文件形式存储在磁盘中,或者以资源的形式存在于EXE或DLL

文件中。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1703.5.2位图操作函数MFC提供了大量的类和函数来处理位图的操作。1.创建DDB函数BOOLLoadBitmap(LPCTSTRlpszResourceName)

;BOOLLoadBitmap(UINTnlDResource);其中,参数lpszResourceName或nlDResouree分别为位图资源名称或位图资源标识。该函数从资源中装入一幅位图,若载入成功,则返回值为真,否则返回值为假。VisualC++程序设计与应

用教程12-ноя-22第1章VisualC++开发环境171BOOLCreateCompatibleBitmap(CDC*pDC,intnWidth,intnHeight);其中参数pDC指向一个设备环境,参数nWidth和nHeight以像素为单位,用来指定位图的宽度和

高度。该函数创建一个与指定设备环境兼容的DDB。若创建成功,函数返回值为真,否则为假。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1722.获取位图信息函数intGetBitmap(BITMAP*pBitMap);该函

数用来获取与DDB有关的信息,参数pBitMap是BITMAP结构的指针。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1733.输出位图函数BOOLBitBlt(intx,inty,intnWidth,intnHeight,CDC*pSrcDC,int

xSrc,intySrc,DWORDdwRop);该函数共有8个参数:x、y、nWidth、nHeight:定义当前设备环境的复制区域;pSrcDC:为指向原设备环境对象的指针;xSrc、ySrc:为原位图的左上角坐标;dwRop:定义了进行复制时的光栅操作方式。VisualC++

程序设计与应用教程12-ноя-22第1章VisualC++开发环境174BOOLPatBlt(intx,inty,intnWidth,intnHeight,DWORDdwRop);其中,参数DwRop

确定画刷类型。该函数是用当前画刷填充一个矩形。并不是所有的设备环境都支持该函数,使用该函数之前需要对设备环境使用GetDeviceCaps进行判断,以便确定是否支持该函数调用。VisualC++程序设计与应用教程1

2-ноя-22第1章VisualC++开发环境175BOOLStretchBlt(intx,inty,intnWidth,intnHeight,CDC*pSrcDC,intxSrc,intySrc,intnSrcWidth,intnSrcHeight,DWORDdwRop);其中,

除了参数nSrcWidth和nSrcHeight表示目标图像新的宽度与高度之外,其他参数x、y、nWidth和nHeight等的含义与BitBlt函数中的同名参数相同。该函数提供了将图形拉伸压缩的复制方式。VisualC

++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1763.5.3位图的显示采用MFC方法编程时,显示一个DDB位图需要执行以下几个步骤。(1)声明一个CBitmap类的对象,使用LoadBitm

ap()函数将位图装入内存。(2)声明一个CDC类的对象,使用CreateCompatibleDC()函数创建一个与显示设备环境兼容的内存设备环境。CreateCompatibleDC()函数的原型为:VirtualBoolCreateCompatibleDC(CDC*pDC);其中,参数pD

C是指向设备环境的指针。如果pDC为NULL,则创建与系统显示器兼容的内存设备环境。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境177(3)使用CDC::SelectObject()函数将位图对象选入设备环境中,并保存原

来设备环境的指针。(4)利用CDC的相关输出函数输出位图。(5)使用CDC::SelectObject()函数恢复原来设备环境。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境178【例3.11】编写一个单文档

的应用程序Li3_11,在视图中显示一幅位图。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1793.6应用实例编写一个应用程序输出“空心文本”、“填充文本”和“

位图文本”三组具有特殊效果的文本。“空心文本”使用红色、实线画笔绘制,“填充文本”使用45°十字交叉阴影线画刷绘制,“位图文本”使用位图画刷绘制。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境180第4章菜单、工具栏与状态栏VisualC++程

序设计与应用教程4.1菜单4.2工具栏4.3状态栏4.4应用实例VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1814.1菜单4.1.1菜单的类型常见菜单有3种:主菜单、弹出菜单和快捷菜单。1.主菜单指

出现在应用程序主窗口或最上层窗口的菜单。通常对应有一个弹出菜单作为它的子菜单。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1822.弹出菜单指选择主菜单或一个菜单项时弹出的子菜单。3.快捷菜单当右击某个界面对象时,通常会弹出快捷菜单,它出现

在鼠标箭头的位置,快速展示当前对象可用的命令功能。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境183菜单设计一般需要经过下面两步:(1)使用菜单编辑器编辑菜单资源;(2)使用ClassWizard进行消息映射,编辑成员函数,完成菜单

所要实现的功能。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1844.1.2编辑菜单使用菜单编辑器来编辑菜单资源。双击ResourceView视图中的Menu菜

单资源,打开菜单编辑器。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1851.插入新菜单项➢在当前空白菜单项位置插入选定窗口中的空白菜单项后按回车键(或双击空白菜单项),系统弹出菜单属性对话框。➢

在某菜单项前插入选中该菜单项并按Ins键,再双击该空白菜单项进行编辑。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1862.属性对话框的设置用于输入菜单项的标识符(ID)、标题(Caption)和菜单项在状态栏上显示的提示(Pro

mpt)信息等。菜单项的标识符(ID)菜单项在状态栏上显示的提示信息标题VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境187VisualC++程序设计与应用教程12-ноя-22第1章VisualC++

开发环境1883.调整菜单项位置选中某菜单项将其拖至适当位置。4.删除菜单项用鼠标单击菜单项或用上、下、左、右光标键选择菜单项,然后单击Cut按钮或按Del键删除。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境189【例4.1】编写一个单文档应用

程序MyDraw,在菜单栏中增加一个“绘图”主菜单,并在其中添加“矩形”和“椭圆”两个菜单项。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1904.1.3建立消息映射在上例中仅添加了菜单,并没有实现菜单的功能,即没有

对应的命令处理函数与菜单项对应,因此,添加的菜单项是灰色的,即处于当前不可用状态。添加新的菜单项后,还应该为菜单项指定一个处理函数,即利用ClassWizard类向导添加一个消息处理函数。VisualC++程序设计与应用教程12-ноя-22第1章VisualC+

+开发环境191【例4.2】为例4.1中增加的菜单项添加消息处理函数。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1924.1.4菜单的有效控制一般情况下,菜单项都不止一种状态。例如,在没有选择任何内容时,Edit菜单下的Copy、Cut等菜单项是无效的

(灰色显示)。有时,我们还会看到,在菜单项旁边可能还会有检查标记,表示它是选中的还是不选中的。比如,在Word的视图菜单项下,当用户选用【网格线】或【标尺】时,相应菜单项前会出现一个“√”。MFC通过消息映射机制和CCmdUI类更新菜单项的显示。Vi

sualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境193在类向导ClassWizard的MessageMap标签中,如果选择一个菜单ID,在Messages列表框中就会出现以下两

项:COMMANDUPDATE_COMMAND_UI其中UPDATE_COMMAND_UI是更新命令用户接口消息,专门用于处理菜单项和工具条按钮的更新。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境194【例4.3】为例4.

2的程序MyDraw添加更新用户界面的消息处理函数,使程序启动时菜单项【椭圆】处于不可用状态,当用户单击【矩形】菜单项后,在菜单项前显示“√”标记,并使【椭圆】菜单项变为可用。VisualC++程序设计与应用教程12-ноя-22第1章

VisualC++开发环境1954.1.5快捷菜单为应用程序创建快捷菜单主要有以下两种方法。1.使用ComponentGallery创建快捷菜单ComponentGallery(组件画廊)是一个组件库,它保存着可以共享或重用的代码。这些代码包括由Visual

C++自带的组件和从用户工程中增加到Gallery中去的用户自定义组件。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境196【例4.4】为例4.3中的应用程序MyDraw增加一个快捷菜单。程序运行后,用户在视图窗口中右击,弹出一

个快捷菜单,显示主菜单“绘图”下的所有菜单项。快捷菜单VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境1972.使用TrackPopupMenu()函数创建快捷菜单使用菜单资源编辑器和CMenu::TrackPopupMenu()函数来创建右

键快捷菜单。CMenu::TrackPopupMenu函数的原型为:BOOLTrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);该函数的功能是显示一

个右键快捷菜单。其中,nflags表示屏幕位置标志(见下表)。x、y分别表示菜单的水平坐标和顶端的垂直坐标;pWnd表示弹出菜单的窗口,包括全部的WM_COMMAND消息;lpRect表示一个矩形域,当单击这个矩

形域时菜单不消失。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境198参数nflags的含义VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境199【例4.5】使用T

rackPopupMenu()函数创建例4.3中的快捷菜单。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2004.1.6创建动态菜单动态创建菜单分为以下3个步骤。

(1)利用CreateMenu()函数创建一个空的弹出式菜单,该函数的原型为:HMENUCreateMenu()该函数没有参数,它的返回值是一个菜单句柄。(2)调用AppendMenu()或InsertMenu()函数在菜单

中加入菜单项。(3)调用函数SetMenu()加载动态菜单。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境201【例4.6】为例4.4中的应用程序MyDraw创建一个【画笔】动态菜单。程序运行后,用户

单击【绘图|矩形】菜单项,在主菜单中添加动态菜单【画笔】,并通过此菜单的子菜单项画一个红色矩形。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2024.1.7创建基于对话框的菜单从第2章可知,利用MFCAppWizard[exe]向导工具可以

生成基于对话框的应用程序。基于对话框的应用程序在运行时并没有菜单栏。下面我们通过实例来讨论如何给它创建一个菜单。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境203【例4.7】编写一个基于对话框的应用程序Li4_

7,为该应用程序添加一个菜单。菜单包括【文件】、【编辑】、【视图】和【帮助】4个主菜单项。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2044.2工具栏在MFC中,工具栏的功能由类CToolBar实现。工具栏资源和工具栏类CToo

lBar是工具栏的两个要素。创建工具栏的基本步骤是:l创建工具栏资源;l构建一个CToolBar对象;l调用CToolBar::Create()或CreateEx()函数创建工具栏窗口;l调用CToolBar::L

oadToolBar载入工具栏资源。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2054.2.1编辑工具栏使用工具栏编辑器来编辑工具栏资源。双击ResourceView视图中的Toolbar工具栏资源

,即可打开工具栏编辑器。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2061.添加按钮双击工具条上的空白按钮或单击空白按钮后,选择【View|Properties】菜单项,弹出如图所示的ToolbarButto

nProperties属性对话框,在此对话框中编辑按钮的标识符、宽度与高度值。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2072.删除按钮将按钮拖出工具栏外,即可删除该按钮。3.编辑

按钮位图设置按钮位图有以下两种方法。l利用绘图工具与调色板直接进行绘制l先利用专用绘图软件制作,然后粘贴到按钮上VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2084.2.2建立消息映射通常,只需让一个按钮的ID值与同样功能菜单项

的ID值相同即可。如果按钮没有对应菜单项,则必须利用ClassWizard类向导添加一个消息处理函数。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境209【例4.8

】编写一个单文档应用程序Li4_8。删除默认工具栏上的【打印设置】按钮,并在【帮助】按钮前添加【上一页】和【下一页】2个按钮,当用户单击这两个按钮后,视图中分别显示文本“这是《上一页》按钮!”和“这是《下一页》按钮!”。VisualC++程序设计与应用教程12-ноя-22第1章

VisualC++开发环境2104.2.3自定义工具栏的操作向导生成的标准工具栏的ID值为IDR_MAINFRAME。对一些功能复杂的应用程序,需要创建多个不同的工具栏。生成工具栏的基本步骤:(1)添加工具栏资源;(2)参照MFC应用程序框架添加工具栏的方法,构造一个C

ToolBar类的对象,调用CToolBar::Create()或CreateEx()函数创建工具栏窗口;(3)调用CToolBar::LoadToolBar()函数载入工具栏资源。除这些基本步骤之外,还可以调用其他相关函数从而进一步改善工具栏。VisualC+

+程序设计与应用教程12-ноя-22第1章VisualC++开发环境2111.创建工具栏窗口调用CToolBar::Create()或CreateEx()函数创建并初始化工具栏窗口对象。若创建成功,函数返回TRUE,否则返回FALSE。2.装载工具栏资源调用LoadToolBa

r()函数装载工具栏资源。用Create()或者CreateEx()函数创建工具栏,其实只是获得了一个窗口句柄,工具栏窗口中位图按钮的加载是靠LoadToolBar()函数来完成的。若加载成功,将返回TRUE,否则返回FALSE。VisualC++

程序设计与应用教程12-ноя-22第1章VisualC++开发环境2123.设置工具栏风格如果在调用初始化函数CToolBar::Create()或者CreateEx()时设置的工具栏风格不满足需要,可以再用SetBarStyle()函数重新进行设置。4.设置工

具栏停靠特性设置工具栏停靠特性,需要调用EnableDocking()函数。既要调用CControlBar::EnableDocking()函数设置工具栏的停靠特性,还要调用框架类的成员函数EnableDocking()函数来设置框架窗口以允许它的子窗口控制栏可以以何种方式停

靠。不管一个框架窗口中有多少个子窗口控制栏,该函数只需调用一次。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2135.设置工具栏的初始停靠位置通过调用CFrameWn

d::DockControlBar()函数定位一个工具栏的初始停靠位置。6.移动工具栏调用CFrameWnd::FloatControlBar()函数来移动、定位一个工具栏。7.工具栏隐显控制通过对函数CWnd::SetStyle()的调用可以改变某些工具栏窗口的风格,但该

函数不能改变WS_VISIBLE,只能通过父类CWnd的ShowWindow()成员函数来显示或隐藏工具栏。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境214【例4.9】编写一个单文档应用程序Li4_9。为该应用程序创建一个带有

“线”、“圆”、“矩形”和“文本”4个按钮的工具栏,当用户单击工具栏上的按钮时,在窗口中显示相应的图形。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2154.3状态栏状态栏实际上是一个窗口,一般分为几个窗格,每个窗格显示不同的信息。使用App

Wizard创建的单文档应用程序,接受默认选项时,生成的应用程序自动创建带有默认窗格的状态栏。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2164.3.1状态栏类的继承关系在MFC中,状态栏的功能由CS

tatusBar类实现。CObjectCCmdTargetCWndCControlBarCStatusBarVisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2174.3.2状态栏类的成员函数成员函数名功能CreateCreateExSetIndicat

orsSetPaneTextCommandToIndexGetItemIDGetItemRectGetPaneInfoGetPaneStyleGetPaneText创建一个状态栏,并与状态栏对象相联系,同时初始化字体及高度创建一个有附加风格的状态栏设置窗格ID号设置窗格文本获取给定ID号的窗格索引

获取与索引对应的窗格ID号获取给定索引的显示矩形获取给定索引的窗格ID号、风格和宽度获取给定窗格风格获取给定索引的窗格文本VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境

2184.3.3状态栏操作利用MFCAppWizard向导创建应用程序时,首先在CMainFrame类中定义一个成员变量m_wndStatusBar,它是状态栏类CStatusBar的对象。其次在MFC应用程序框架的实现文件MainFrm.cpp中,为状态栏定义一个静态数

组indicators,如下所示:staticUINTindicators[]={ID_SEPARATOR,//显示命令功能提示ID_INDICATOR_CAPS,//显示大写锁定键状态ID_INDI

CATOR_NUM,//显示数字锁定键状态ID_INDICATOR_SCRL,//显示滚动锁定键状态};VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境219这个全局的提示符数组indicator

s中的每个元素代表状态栏上一个窗格的ID值,这些ID在应用程序的串表资源StringTable中进行了说明。通过增加新的ID标识来增加用于显示状态信息的窗格。状态栏显示的内容由数组indicators决定,需要在状态栏中显示的各窗格的标识符、位置以及个数也由该数组决定,状

态栏显示的内容是可以修改的。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境220最后CWnd::Create()函数以主框架窗口为父窗口创建状态栏,创建后默认停靠在主框架窗口的底部。CWnd::S

etIndicators(indicators,sizeof(indicators)/sizeof(UINT))函数将创建后的状态栏分隔为sizeof(indicators)/sizeof(UINT)个窗格,窗格的ID分别为indicators数组中的元素值。VisualC++程序设计与应用教

程12-ноя-22第1章VisualC++开发环境221一个应用程序只有一个状态栏,所以对状态栏的操作主要是对状态栏上窗格的操作。为了把一个窗格添加到默认的状态栏中,一般要完成下列步骤:l为新建窗格创建一个命令ID和默认字符串;l将该窗格的命令ID添加到状态

栏的静态数组indicators中;l为该窗格创建一个命令更新处理程序。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境222【例4.10】编写一个单文档应用程序Li4_10。程序运行后

,在状态栏中显示系统时间。VisualC++程序设计与应用教程12-ноя-22第1章VisualC++开发环境2234.4应用实例编写一个能用不同的颜色及线宽绘制正弦与余弦曲线的应用程序。程序运行后,首先在视图窗口中显示坐标轴,然后根据用户所选择的曲线类

型、颜色及线宽绘制曲线,并在状态栏中显示相关的提示信息。224结束语谢谢大家聆听!!!

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?