3 vc++ 编程技术.ppt_第1页
3 vc++ 编程技术.ppt_第2页
3 vc++ 编程技术.ppt_第3页
3 vc++ 编程技术.ppt_第4页
3 vc++ 编程技术.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

Vc 编程技术 授课对象 本科 教师 廖光忠 第三讲MFC应用程序基础 目标使用VisualC MFC库和DeveloperStudio的向导和编辑器创建应用程序 AppWizardClassWizardMFC应用程序框架详解 1 AppWizard 应用程序与环境这部分的例子包括用MFC规划应用程序的执行 既用应用程序向导 也用强制手段 包括应用程序与环境交互的大部分公共问题 如初始化屏幕 显示图标 处理命令行选项及保存优先选项 菜单下一个关注的内容是应用程序的菜单 即添加命令 更新状态 尝试修改外观 也包括了怎样用ClassWizard 类向导 在应用程序类添加菜单命令 工具栏和状态栏这部分的例子讨论用DeveloperStudio的编辑器创建工具栏和状态栏 例子包括更新两种类型控制条的控件 以反映应用程序状态变化 以及给任何一种控制条添加非标准控件 视图如果选择创建一个单文档界面或多文档界面应用程序 则应用程序的视图将是用户与应用程序交互的主要模式 创建的应用程序类型决定了要创建的视图的类型 视图的其他方面包括分割视图和有条件改变鼠标形状等 1 AppWizard 对话框和对话条对话框和对话条是与应用程序进行交互的第二种模式 它们可以是有模式或无模式的 可以全部由你自己建立 也可以定制一个系统提供的对话框 控件窗口按钮和编辑框一般出现在对话框中 它们通常叫做控件窗口 由操作系统提供的子窗口 不仅可以把它们放进对话框 而且还可以把它们放进视图 对话条或任何有窗口的地方 绘图这部分包括从绘图和文本到操纵位图 用AppWizard创建一个MFC应用程序 步骤1 单击DeveloperStudio的File 文件 菜单中的New 新建 命令 以显示New对话框 选择MFC AppWizard exe 然后输入需要创建工程的名称和目录 注意 几乎在所有的工程文件的内部和外部都使用该名字 因此 此处的任何错误在以后都是很难改正的 指定应用程序的文件名和位置 Enterprojectnameanddirectory PickMFCAppWizard exe 2 AppWizard的第一步是选择应用程序的类型 该例子的其余部分假定已选定了一个单文档界面或多文档界面应用程序 选择应用程序类型 Picktheapplicationtype Pickthelanguagestyle 3 AppWizard的第二步要求指定应用程序所需要的数据库支持种类 选择HeaderFilesOnly 只有头文件 使AppWizard只添加支持数据库访问的MFC类 选择DatabaseViewwtihoutFileSupport 数据库视图 没有文件支持 或者DatabaseViewWithFileSupport 数据库支持 具有文件支持 使AppWizard创建一个具有特殊的视图和文档类的简单的数据库编辑器 如果选择DatabaseViewwithoutFileSupport AppWizard将不添加标准文件打开命令到应用程序菜单 即 File New File Open等 从理论上讲 如果只访问一个数据库 无论如何也不需这些命令 当应用程序开始运行时 合适的数据库将被自动打开 然而 如果应用程序既要访问平面文件 又要访问数据库文件 则应该选择DatabaseViewwithFileSupport Pickdatabasesupportanddatasource 4 AppWizard的第三步要求指定应用程序所需要的COM支持 Openadvancedapplicationoptions Picksimpleapplicationoptions 5 AppWizard的第四步要求选择一些基本的应用程序选项 可以选择应用程序是否有一个工具栏或状态 是否添加打印命令到菜单 以及是否包括支持e mail或网络通信 RecentFilelist 当前文件列表 是应用程序打开的最近几个文件的一个列表 它由应用程序自动维护 用户必须决定这里的n是多少 单击Advanced 高级 按钮进行更高级的选项设置 选择应用程序选项 6 高级选项的第一页要选择将在应用程序标题栏中显示的标题 如果创建一个串行化它的文档到磁盘的应用程序 则可以选择应用程序追加给那些文件的文件扩展名 然后就可以在打开或保存文档时显示的文件对话框的过滤域中编辑文本 Enterthethreeletterextensionofthedocumentscreatedbyyourapplication TheneditthefilternamethatwillappearintheFileDialog 指定应用程序标题 缺省文件扩展名和文件对话文本 7 高级选项的第二页要求在应用程序中添加视图分割 Splitting 能力 它将提供允许动态分割他们的视图的一个菜单命令 也可以决定是否要求应用程序主窗口或子窗口初始最大化或初始最小化 以及用户是否能够重调它们的大小 EnteradvancedapplicationOptions 指定应用程序的框架窗口选项 8 在AppWizard的第五步 必须决定是用MFC库静态链接 还是用一个共享的MFCDLL进行链接 静态链接MFC库使应用程序相当庞大 但用户从来不必考虑正确版本的MFCDLL当前是否已经安装在系统上 如果计划用MFC库创建自己的DLL 则必须链接MFCDLL ChoosetostaticallylinkwithMFCorshareitsDLLwithotherapplications 9 AppWizard的最后一步 允许改变应用程序的视图类 关于选项的描述 参见上个例子 对于没有列出的任何视图类 选择缺省视图类 可以在以后编辑名字 Pickviewclassfile Optionallychooseadifferentviewclass 选择一个视图类 10 现在 AppWizard将继续建立应用程序的所有类 这些类是创建一个完全可以执行应用程序 虽然特征贫乏 所必须的 只要单击DeveloperStudio的Build BuildAll菜单命令 便可以建立执行文件 2 ClassWizard 目标把一个类添加到MFC应用程序 该类既可以扩展一个MFC类 也可以独立存在 步骤1 扩展一个已存在的MFC类1 单击DeveloperStudio的View ClassWizard菜单命令 打开MFCClassWizard对话框 然后单击AddClass 添加类 按钮 将出现一个下拉菜单 从中应选择New 以打开NewClass 新类 对话框 Clickon addclass button 用ClassWizard创建一个新类 2 输入新类的名字 在新类的名字前面添加一个 C 当创建类的 h和 cpp文件时 ClassWizard将删除这个 C 然后从可用的MFC类列表中选择一个基类 如果选择CRecordSet ClassWizard还将引导用户通过捆绑一个数据库表到新类所必须的步骤 要从CWnd类派生 可以选择 genericCWnd 要派生CSplitterWnd 选择 splitter 如果想派生的MFC类没有列出 诸如用CToolBar 则选择一个类似的名字 如CToolBarCtrl 然后编辑由此产生的文件 Typeinnewclass Pickbaseclass 2 创建一个非MFC类如果不想用一个MFC类作为基类 则单击环境的Insert NewClass菜单命令 以打开一个选择性的NewClass对话框 这一选择性版增加了用以指定ClassType的组合框 选择GenericType要求指定自己的基类 如果有的话 3 从ClassWizard删除一个类1 首先 必须从文件的工程列表和工程的子目录中删除ClassWizard创建的 cpp和 h文件 2 你也许会认为那就是所有必须做的了 但是并非如此 下一次应用ClassWizard时 误拼的类象一个幽灵一样仍然在那里 ClassWizard对每一个在各自的 clw文件中创建的类保持一个记录 不过只要删除 clw文件 下次调用ClassWizard时 它就会告诉你没有找到 clw文件并提问是否想创建一个新的 回答Yes 则ClassWizard将用工程目录中的 h文件建立一个新的 clw文件 说明 从其他工程中插入一个类 只要从那个工程目录中直接拷贝相应的文件即可 ClassWizard不能识别该新类 直到做了下面这步工作 删除工程中的 clw文件 并再次调用ClassWizard 当ClassWizard不能找到它的 clw文件时 它将提问是否想重建它 回答Yes DeveloperStudio6 0版本的ClassWizard自动更新它的 clw文件 例子1 初始化应用程序屏幕目标设定应用程序初始屏幕的位置和大小 策略我们有两种可选方案 首先 创建应用程序时在ClassWizard的高级选项中作出适当的选择 然而 如果想改变一个已有的应用程序中的选择 我们将把代码添加到CMainFrame的PreCreateWindow 中 以控制应用程序主窗口的初始位置和大小 步骤1 使用AppWizard1 单击Advanced按钮 选择WindowStyle标签 选择一个ThickFrame 允许用户通过拖动窗口的右下角来重新调整应用程序窗口的大小 选择Minimized 最小化 或Maximized 最大化 则使窗口初始最小化或最大化 2 如果想在以后改变选择 则需要直接编辑CMainFrame PreCreateWindow 函数 直接编辑还允许为应用程序的初始外观作某些额外的变化 2 编辑CMainFrame PreCreateWindow 1 使应用程序位于屏幕中央 并只占据屏幕的90 可以使用下面的代码 BOOLCMainFrame PreCreateWindow CREATESTRUCT 2 如果还想从应用程序的标题栏中删除文档标题 则把下面的代码添加到PreCreateWindow 中 cs style 说明 如果初始最大化应用程序的窗口 还应该在CMainFrame PreCreateWindow 中为它设置一个初始大小 当用户单击应用程序的恢复按钮时 应用程序窗口能够迅速缩小到在PreCreateWindow 中设定的大小 把应用程序窗口的初始大小设置为固定 并且位置也固定 用户作用于窗口大小或位置的变化都不作保存 保存窗口的大小和位置参见下一个例子 然而 如果使用下一个例子 仍然应该会使用本例 应用程序第一次在系统上运行时 它没有任何保存的设置值 因此 它需要使用这些初始设置值 如果不设置窗口的初始大小和位置 Windows操作系统将根据级联 Cascading 算法选择一个 每个新的应用程序的窗口被建立在右边 并在最后一个应用程序的底下 例子2保存应用程序屏幕目标保存应用程序屏幕的大小 位置和状态 包括每个工具栏或对话条的位置和大小 以便应用程序在下一次运行时能恢复它们 策略当应用程序关闭时 不仅保存主窗口的大小和位置 而且还把工具栏和状态栏的状态保存到系统的一个注册区 因此 当应用程序被再次打开时 我们将检索这些消息 并恢复窗口和工具栏等等 步骤1 保存设置值1 在系统注册区中定义一个位置 在该位置用一个全局包含文件保存这些信息 Company 是 公司 名 defineCOMPANY KEY Company defineSETTINGS KEY Settings defineWINDOWPLACEMENT KEY WindowPlacement 2 在应用程序类的InitInstance 成员函数中 把COMPANY KEY添加到SetRegistryKey 中 SetRegistryKey COMPANY KEY 3 用ClassWizard把一个WM CLOSE消息处理函数添加到CMainFrame类中 用SaveBarState 可以保存条的位置和大小 用GetWindowPlacement 可以得到应用程序的当前大小和位置 用WriteProfileBinary 把它的结果保存到系统注册区 2 恢复设置值1 再次执行应用程序后 恢复工具栏到它们的初始状态 把下面的代码添加到CMainFrame类的OnCreate 成员函数的开始位置 LoadBarState ControlBarStates 2 要从系统注册表中恢复应用程序的主窗口 在应用程序类中找到ShowWindow 函数 并用下面的代码替换它 注意 现在我们用SetWindowPlacement 恢复主窗口到它的初始大小和位置 例子3动态改变应用程序图标目标改变应用程序的图标 甚至使图标有动感 该图标也可以出现在系统的任务栏里 并显示应用程序的进展 即使窗口

温馨提示

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

评论

0/150

提交评论