欢迎来到天天文库
浏览记录
ID:19673463
大小:1.26 MB
页数:58页
时间:2018-10-04
《框架窗口界面设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章框架窗口界面设计6.1框架窗口6.2菜单6.3工具栏6.4状态栏6.5交互对象的动态更新6.6图标和光标6.1框架窗口6.1.1单文档和多文档程序框架窗口文档应用程序的MFC类结构如图是单文档应用程序Ex_SDI和多文档应用程序Ex_MDI的MFC类结构。CAboutDlg是每一个应用程序框架都有的,用来显示本程序的有关信息。CEx_SDIApp和CEx_MDIApp是应用程序类,是从CWinApp类派生而来,负责应用程序创建、运行和终止,每一个应用程序都需要这样的类。CEx_SDIDoc和CEx_MDIDoc是文档类,它们是从CDocument类派生而来,负责应用程序文档数据管理。CE
2、x_SDIView和CEx_MDIView是视图类,它们既可以从基类CView派生,也可以从CView派生类派生,负责数据的显示、绘制和其他用户交互。CMainFrame类是用来负责主框架窗口的显示和管理,包括工具栏和状态栏等界面元素的初始化。对于单文档应用程序来说,主框架窗口类是从CFrameWnd派生而来的,而对于多文档应用程序程序,主框架窗口是从CMDIFrameWnd派生的。6.1框架窗口CChildFrame类是从CMDIChildWnd派生而来,专门用来管理多文档应用程序中的文档窗口。无论是CMDIChildWnd还是CMDIFrameWnd类,它们都是从CFrameWnd派生而来
3、的。对于基于对话框的应用程序,一般有CAboutDlg类、应用程序类和对话框类。上述MFC类之间的继承和派生关系如图6.2所示。图6.2MFC类的基本层次结构CCmdTargetCWndCDocumentCFrameWndCObjectCWinTreadCWinAppCViewCDialog及控件CMDIChildWndCMDIFrameWndCMiniFrameWnd6.1框架窗口项目的文件组织项目中源文件都是采用文件夹的方式进行管理的,将项目名作为文件夹名,此文件夹下包含源程序代码文件、项目文件以及项目工作区文件等。每一个类的源代码均保存同名的h和cpp文件。其他一些文件类型的含义:.op
4、t关于开发环境的参数文件,如工具条位置等信息.aps(AppStudioFile)资源辅助文件,二进制格式.clwClassWizard信息文件.dsp(DeveloperStudioProject)项目文件.plg编译信息文件.mdp(MicrosoftDevStudioProject)旧版本的项目文件.bsc用于浏览项目信息.map执行文件的映像信息纪录文件.pch(Pre-CompiledFile)预编译文件,可以加快编译速度,但是文件非常大.pdb(ProgramDatabase)记录程序有关的一些数据和调试信息.ncb无编译浏览文件(nocompilebrowser)还有相应的Deb
5、ug(调试)、Res(资源)等子文件夹。用应用程序向导创建项目时,系统自动为项目创建Win32Debug版本的运行程序,并使用相应的默认配置。程序编连后,用于该项目的可执行文件以及其他调试的信息文件都安放在Debug文件夹中。程序项目有一个Win32Release版本,与Release的区别在于:Debug版本的运行程序有相应的调试信息码,Release版本的运行程序没有,但Release版本的运行程序经过代码的优化,其程序的运行效率被最大提升。选择“编译”“配置”菜单命令,在“配置”对话框将项目设置成Win32Release版本。6.1框架窗口主框架窗口和文档窗口主框架窗口是直接放置在桌面
6、(DeskTop)上的那个窗口,每个应用程序只能有一个主框架窗口。主框架窗口负责管理各个用户交互对象并根据用户操作相应地创建或更新文档窗口及其视图。文档窗口对SDI程序来说,和主框架窗口是一致的,主框架窗口就是文档窗口;对于MDI程序,文档窗口是主框架窗口的子窗口,如图。文档窗口一般都有相应的可见边框,它的客户区(除了窗口标题栏、边框外的区域)是由相应的视图来构成的,因此可以说视图是文档窗口内的子窗口。文档窗口时刻跟踪当前处于活动状态的视图的变化,并将用户或系统产生的消息传递给当前活动视图。6.1框架窗口6.1.2窗口状态的改变MFCAppWizard为每个窗口设置了相应的大小和位置。运行程序
7、时,会自动调用框架内部的WinMain函数,并自动查找该应用程序类的全局变量theApp,然后自动调用用户应用程序类的虚函数InitInstance,该函数会进一步调用相应的函数来完成主窗口的构造和显示工作,代码:BOOLCEx_SDIApp::InitInstance(){…m_pMainWnd->ShowWindow(SW_SHOW);//显示窗口m_pMainWnd->UpdateWindo
此文档下载收益归作者所有