MFC应用程序基础课件_第1页
MFC应用程序基础课件_第2页
MFC应用程序基础课件_第3页
MFC应用程序基础课件_第4页
MFC应用程序基础课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

MFC应用程序基础目标使用VisualC++、MFC库和DeveloperStudio的向导和编辑器创建应用程序。AppWizardClassWizardMFC应用程序框架详解1.AppWizard应用程序与环境这部分的例子包括用MFC规划应用程序的执行,既用应用程序向导,也用强制手段;包括应用程序与环境交互的大部分公共问题,如初始化屏幕、显示图标、处理命令行选项及保存优先选项。菜单 下一个关注的内容是应用程序的菜单,即添加命令、更新状态、尝试修改外观。也包括了怎样用ClassWizard(类向导)在应用程序类添加菜单命令。工具栏和状态栏 这部分的例子讨论用DeveloperStudio的编辑器创建工具栏和状态栏。例子包括更新两种类型控制条的控件,以反映应用程序状态变化,以及给任何一种控制条添加非标准控件。视图 如果选择创建一个单文档界面或多文档界面应用程序,则应用程序的视图将是用户与应用程序交互的主要模式。创建的应用程序类型决定了要创建的视图的类型。视图的其他方面包括分割视图和有条件改变鼠标形状等。1.AppWizard…对话框和对话条 对话框和对话条是与应用程序进行交互的第二种模式,它们可以是有模式或无模式的,可以全部由你自己建立,也可以定制一个系统提供的对话框。控件窗口 按钮和编辑框一般出现在对话框中,它们通常叫做控件窗口(由操作系统提供的子窗口)。不仅可以把它们放进对话框,而且还可以把它们放进视图、对话条或任何有窗口的地方。绘图 这部分包括从绘图和文本到操纵位图。用AppWizard创建一个MFC应用程序步骤1)单击DeveloperStudio的File(文件)菜单中的New(新建)命令,以显示New对话框,选择MFC(AppWizard(exe)),然后输入需要创建工程的名称和目录。注意,几乎在所有的工程文件的内部和外部都使用该名字,因此,此处的任何错误在以后都是很难改正的。指定应用程序的文件名和位置EnterprojectnameanddirectoryPickMFCAppWizard(exe)2)AppWizard的第一步是选择应用程序的类型,该例子的其余部分假定已选定了一个单文档界面或多文档界面应用程序。选择应用程序类型PicktheapplicationtypePickthelanguagestyle3)AppWizard的第二步要求指定应用程序所需要的数据库支持种类。选择HeaderFilesOnly(只有头文件)使AppWizard只添加支持数据库访问的MFC类。选择DatabaseViewwtihoutFileSupport(数据库视图,没有文件支持)或者DatabaseViewWithFileSupport(数据库支持,具有文件支持)使AppWizard创建一个具有特殊的视图和文档类的简单的数据库编辑器。如果选择DatabaseViewwithoutFile Support,AppWizard将不添加标准文件打开命令到应用程序菜单(即:File/New,File/Open等)。从理论上讲,如果只访问一个数据库,无论如何也不需这些命令—当应用程序开始运行时,合适的数据库将被自动打开。然而,如果应用程序既要访问平面文件,又要访问数据库文件,则应该选择DatabaseViewwithFileSupport。Pickdatabasesupportanddatasource4)AppWizard的第三步要求指定应用程序所需要的COM支持。OpenadvancedapplicationoptionsPicksimpleapplicationoptions5)AppWizard的第四步要求选择一些基本的应用程序选项,可以选择应用程序是否有一个工具栏或状态,是否添加打印命令到菜单,以及是否包括支持e-mail或网络通信。RecentFilelist(当前文件列表)是应用程序打开的最近几个文件的一个列表,它由应用程序自动维护,用户必须决定这里的n是多少。单击Advanced(高级)按钮进行更高级的选项设置。选择应用程序选项6)高级选项的第一页要选择将在应用程序标题栏中显示的标题。如果创建一个串行化它的文档到磁盘的应用程序,则可以选择应用程序追加给那些文件的文件扩展名,然后就可以在打开或保存文档时显示的文件对话框的过滤域中编辑文本。Enterthethreeletterextensionofthedocumentscreatedbyyourapplication.TheneditthefilternamethatwillappearintheFileDialog.指定应用程序标题、缺省文件扩展名和文件对话文本7)高级选项的第二页要求在应用程序中添加视图分割(Splitting)能力,它将提供允许动态分割他们的视图的一个菜单命令。也可以决定是否要求应用程序主窗口或子窗口初始最大化或初始最小化,以及用户是否能够重调它们的大小。EnteradvancedapplicationOptions指定应用程序的框架窗口选项8)在AppWizard的第五步,必须决定是用MFC库静态链接,还是用一个共享的MFCDLL进行链接。静态链接MFC库使应用程序相当庞大,但用户从来不必考虑正确版本的

MFCDLL当前是否已经安装在系统上。如果计划用MFC库创建自己的DLL,则必须链接MFCDLL。ChoosetostaticallylinkwithMFCorshareitsDLLwithotherapplications9)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),然后编辑由此产生的文件。TypeinnewclassPickbaseclass2.创建一个非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&cs){//centerwindowat90%offullscreenint

xSize=::GetSystemMetrics(SM_CXSCREEN);int

ySize=::GetSystemMetrics(SM_CYSCREEN);cs.cx=xSize*9/10;cs.cy=ySize*9/10;cs.x=(xSize-cs.cx)/2;cs.y=(ySize-cs.cy)/2;returnCMDIFrameWnd::PreCreateWindow(cs);}2)如果还想从应用程序的标题栏中删除文档标题,则把下面的代码添加到PreCreateWindow()中。

cs.style&=~FWS_ADDTOTITLE;3)如果还想从应用程序标题栏中去掉最小化和最大化按钮,则添加:

cs.style&=~(WS_MAXIMIZEBOX|WS_MINIMIZEBOX);4)如果想使应用程序的大小固定,以致拖动窗口的右下角时没有反映,那么添加:

cs.style&=~WS_THICKFRAME;5)如果想应用程序在开始执行时被最大化,那么找到应用程序类中的ShowWindow(),并改变它,令它使用SW_SHOWMAXIMIZED标志而不用m_nCmdShow。

pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);//orSW_SHOWMINIMIZED pMainFrame->UpdateWindow();6)如果想在一个MDI应用程序中初始最大化一个子窗口,则把PreCreateWindow()添加到CChildFrame类中,并给它添加如下代码:

BOOLCChildFrame::PreCreateWindow(CREATESTRUCT&cs) {

cs.style=WS_CHILD|WS_VISIBLE|WS_OVERLAPPED| WS_CAPTION|WS_SYSMENU|FWS_ADDTOTITLE| WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX| WS_MAXIMIZE; returnCMDIChildWnd::PreCreateWindow(cs);}说明■如果初始最大化应用程序的窗口,还应该在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()可以得到应用程序的当 前大小和位置,用WritePr

温馨提示

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

评论

0/150

提交评论