第3章MFC基本应用程序的建立_第1页
第3章MFC基本应用程序的建立_第2页
第3章MFC基本应用程序的建立_第3页
第3章MFC基本应用程序的建立_第4页
第3章MFC基本应用程序的建立_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第3章MFC基本应用程序的建立

3.1Windows编程基础3.2创建MFC应用程序3.3MFC应用程序框架3.4VisualC++常用操作3.1Windows编程基础3.1.1C++的Windows编程【例Ex_HelloMsg】

一个简单的Windows应用程序#include<windows.h>intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){ MessageBox(NULL,"你好,我的VisualC++世界!","问候",0); return0;}3.1.1C++的Windows编程3.1.1C++的Windows编程(5)输入上面的代码,运行程序,结果如图3.1所示。3.1.1C++的Windows编程【例Ex_HelloWin】

一个比较完整的Windows应用程序在VisualC++6.0中创建和运行上述程序的步骤与【例Ex_HelloMsg】相同。程序运行后,单击鼠标左键,就会弹出一个对话框,结果如图3.2所示。3.1.1C++的Windows编程窗口过程函数WndProc用来接收和处理各种不同的消息,而主函数WinMain通常要完成以下几步工作:(1)调用API函数RegisterClass注册应用程序的窗口类。(2)调用相关API函数创建和显示窗口,并进行其他必要的初始化处理。(3)创建和启动应用程序的消息循环。(4)如果接收到WM_QUIT消息,则调用PostQuitMessage,向系统请求退出。3.1.1C++的Windows编程上述Windows应用程序的基本流程,还可用图3.3来表示。3.1.2Windows编程特点1.消息驱动机制在Windows操作环境中,无论是系统产生的动作或是用户运行应用程序产生的动作,都称为事件(Events)产生的消息(Message)。2.图形设备接口在传统的DOS环境中,想要在打印机上打印一幅图形是一件非常复杂的事情,因为用户必须根据打印机类型和指令规则向打印机输送数据。3.1.2Windows编程特点3.基于资源的程序设计Windows应用程序常常包含众多图形元素,如光标、菜单、工具栏、位图、对话框等,在Windows环境下,每一个这样的元素都作为一种可以装入应用程序的资源来存放。4.动态链接库动态链接库提供了一些特定结构的函数,能被应用程序在运行过程中装入和连接,且多个程序可以共享同一个动态链接库,这样就可以大大节省内存和磁盘空间。3.1.2Windows编程特点5.进程和线程32位Windows多任务操作系统采用了进程和线程的管理模式。进程是装入内存中正在执行的应用程序。进程包括私有的虚拟地址空间、代码、数据及其他操作系统资源,如文件、管道及对该进程可见的同步对象等。3.1.3Windows基本数据类型在前面的示例和函数原型中,有一些“奇怪”的数据类型,如前面的HINSTANCE和LPSTR等。表3.1列出了一些在Windows编程中常用的基本数据类型。Windows所用的数据类型对应的基本数据类型说

明BOOLbool布尔值BSTRunsignedshort*32位字符指针BYTEunsignedchar8位无符号整数COLORREFunsignedlong用做颜色值的32位值DWORDunsignedlong32位无符号整数,段地址和相关的偏移地址LONGLong32位带符号整数LPARAMlong作为参数传递给窗口过程或回调函数的32位值LPCSTRconstchar*指向字符串常量的32位指针LPSTRchar*指向字符串的32位指针LPVOIDvoid*指向未定义类型的32位指针LRESULTlong来自窗口过程或回调函数的32位返回值UINTunsignedint32位无符号整数WORDunsignedshort16位无符号整数WPARAMunsignedint当做参数传递给窗口过程或回调函数的32位值3.1.3Windows基本数据类型表3.2列出了常用的预定义句柄,它们的类型均为void*,即一个32位指针。句柄类型说明句柄类型说明HBITMAP保存位图信息的内存域的句柄HINSTANCE应用程序的实例句柄HBRUSH画刷句柄HMENU菜单句柄HCURSOR鼠标光标句柄HPALETTE颜色调色板句柄HDC设备描述表句柄HPEN在设备上画图时用于指明线型的笔的句柄HFONT字体句柄HWND窗口句柄HICON图标句柄3.2创建MFC应用程序3.2.1设计一个MFC程序【例Ex_HelloMFC】

一个MFC应用程序3.2.1设计一个MFC程序3.2.2理解程序代码下面来看看上述程序中InitInstance的执行过程。(1)首先执行的是:m_pMainWnd=newCMainFrame();该语句用来创建从CFrameWnd类派生而来的用户框架窗口CMainFrame类对象,继而调用该类的构造函数,使得Create函数被调用,完成了窗口创建工作。(2)然后执行后面两句:m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();用于窗口的显示和更新。(3)最后返回TRUE,表示窗口创建成功。3.2.3使用MFCAppWizard在VisualC++6.0中,选择“文件”→“新建”菜单命令,在弹出的“新建”对话框中,可以看到“工程”标签页面中,显示了一系列的应用程序项目类型,如表3.3所示。名称项目ATLCOMMFCAppWizard创建ATL(ActiveTemplateLibrary)应用模块工程ClusterResourceTypeWizard创建ClusterResource(用于WindowsNT服务器)CustomMFCAppWizard创建自己的应用程序向导DatabaseProject创建数据库应用程序DevStudioAdd-inWizard创建ActiveX组件或VBScript宏ExtendedStoredProcWizard创建基于SQL服务器下的外部存储过程ISAPIExtensionWizard创建InternetServer程序MakeFile创建独立于VisualC++开发环境的应用程序MFCActiveXControlWizard创建ActiveXControl应用程序MFCAppWizard(dll)MFC的动态链接库MFCAppWizard(exe)一般MFC的Windows应用程序UtilityProject创建简单、实用的应用程序Win32Application其他Win32的Windows应用程序Win32ConsoleApplicationWin32的控制台应用程序Win32Dynamic-LinkLibraryWin32的动态链接库Win32StaticLibraryWin32的静态链接库3.2.4创建文档应用程序1.开始选择“文件”→“新建”菜单命令,在弹出的“新建”对话框中,“工程”标签页面中显示了一系列的应用程序项目类型;选择MFCAppWizard(exe)的项目类型,将项目工作文件夹定位在“D:\VisualC++程序\第3章”,并在“工程名称”编辑框中输入项目名Ex_SDIHello,如图3.5所示。3.2.4创建文档应用程序2.第一步单击

“确定”按钮,出现如图3.6所示的对话框。3.2.4创建文档应用程序3.第二步单击“下一步”按钮,出现如图3.7所示的对话框3.2.4创建文档应用程序4.第三步单击“下一步”按钮进入下一步,出现如图3.8所示的对话框。3.2.4创建文档应用程序5.第四步单击“下一步”按钮进入下一步,出现如图3.9所示的对话框,前几项依次确定对浮动工具条、打印与预览及通信等特性的支持。3.2.4创建文档应用程序6.第五步保留默认选项,单击“下一步”按钮,弹出如图3.10所示的对话框,这里出现3个方面的选项。3.2.4创建文档应用程序7.第六步保留默认选项,单击“下一步”按钮,出现如图3.11所示的对话框。3.2.4创建文档应用程序8.编译并运行到这里为止,虽然没有编写任何程序代码,但MFCAppWizard已经根据前面的选择自动生成了相应的基本应用程序框架。单击编译工具栏

上的运行工具按钮

或按快捷键【Ctrl+F5】,系统开始编连并运行生成的单文档应用程序可执行文件Ex_SDIHello.exe,运行结果如图3.12所示。菜单栏工具栏状态栏标题栏文档窗口3.3MFC应用程序框架3.3.1项目文件和配置表3.4列出了这些文件类型的含义。类型含义.cpp(CPlusPlus),.hC++文件,C++头文件.opt关于开发环境的参数文件,如工具条位置等信息.aps(AppStudioFile)资源辅助文件,二进制格式.clwClassWizard信息文件.dsp(DeveloperStudioProject)项目文件.dsw(DeveloperStudioWorkspace)项目工作区文件.plg编译信息文件.hpj(HelpProject) 帮助文件项目.mdp(MicrosoftDevStudioProject)旧版本的项目文件.bsc浏览信息文件.map执行文件的映像信息记录文件.pch(Pre-CompiledFile) 预编译文件,可以加快编译速度,但是文件非常大.pdb(ProgramDatabase)记录与程序有关的一些数据和调试信息.exp记录DLL文件中的一些信息,只有在编译DLL后才会生成.ncb无编译浏览文件(nocompilebrowser)3.3.1项目文件和配置除了上述文件外,还有相应的Debug(调试)、Release(发行)、Res(资源)等子文件夹。例如前面创建的单文档应用程序项目Ex_SDIHello,其各文件的组织如图3.13所示。3.3.2项目管理和项目工作区1.ClassView项目工作区窗口的ClassView页面用于显示和管理项目中所有的类。以打开的项目名Ex_SDIHello为例,ClassView页面显示出“Ex_SDIHelloclasses”的树状节点,在它的前面是一个图标和一个套在方框中的符号“+”,单击符号“+”或双击图标,则Ex_SDIHello中的所有类名都将被显示,如CMainFrame、CEx_SDIHelloApp、CEx_SDIHelloDoc、CEx_SDIHelloView等,如图3.14所示。3.3.2项目管理和项目工作区2.ResourceView单击项目工作区窗口底部的ResourceView标签,打开ResourceView页面,如图3.15所示。3.3.2项目管理和项目工作区3.FileView单击项目工作区窗口底部的FileView标签,打开FileView页面,如图3.16所示。3.3.3MFC程序类结构将VisualC++6.0项目工作区窗口切换到ClassView页面,可以看到MFC为单文档应用程序项目Ex_SDIHello自动创建了类CAboutDlg、CEx_SDIHelloApp、CEx_SDIHelloDoc、CEx_SDIHelloView和CMainFrame。这些MFC类之间的继承和派生关系如图3.17所示。3.4VisualC++常用操作3.4.1使用类向导打开MFC类向导可以使用下列几种方法。(1)选择“查看”→“建立类向导”菜单命令或直接使用【Ctrl+W】快捷键。(2)在源代码文件的文档编辑窗口中,右击鼠标,从弹出的快捷菜单中选择“建立类向导”命令。当MFC类向导打开后,就会弹出如图3.18所示的MFCClassWizard对话框(设VisualC++打开的是单文档应用程序Ex_SDI)。3.4.2类的添加和删除1.类的添加按快捷键【Ctrl+W】启动MFCClassWizard对话框。单击

按钮,从弹出的下拉菜单中选择New命令,弹出如图3.19所示的NewClass对话框。3.4.2类的添加和删除2.类的删除当添加的类需要删除时,则需要按下列步骤进行。(1)将VisualC++6.0打开的所有文档窗口关闭。(2)将项目工作区窗口切换到FileView页面,展开SourceFiles和HeaderFiles节点,分别选定要删除类的对应.h和.cpp文件,按下【Delete】键,删除这两个文件。(3)选择“文件”→“关闭工作区”菜单命令,关闭项目。(4)从当前项目文件夹中删除对应的.h和.cpp文件与.clw文件。3.4.3成员的添加和删除1.添加类的成员函数(1)选择“文件”→“打开工作空间”菜单命令,从弹出的对话框中打开前面创建的单文档应用程序项目Ex_SDI。(2)将项目工作区窗口切换到ClassView页面,右击“CEx_DemoView”类名,弹出相应的快捷菜单,如图3.21所示。3.4.3成员的添加和删除(3)从弹出的快捷菜单中选择“AddMemberFunction”,弹出“添加成员函数”(AddMemberFunction)对话框。在“函数类型”(FunctionType)框中输入void,在“函数描述”(FunctionDeclaration)框中输入DoDemo(intnDemo1),对话框下方用来确定该成员函数的访问方式,如

图3.22所示。3.4.3成员的添加和删除(4)单击“确定”按钮,文档窗口打开该类源代码文件,并自动定位到添加的函数实现代码处,在这里用户可以添加该函数的代码,如图3.23所示。3.4.3成员的添加和删除2.添加类的成员变量①将项目工作区窗口切换到ClassView页面。②右击“CEx_SDIView”类名,从弹出的快捷菜单中选择“AddMemberVariable”,弹出“添加成员变量”(AddMemberVariable)对话框。在“变量类型”(VariableType)框中输入int,在“变量名称”(Va

温馨提示

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

评论

0/150

提交评论