MFC程序的与window程序的区别及需要的库和头文件

来源:互联网 发布:iphone手机必备软件 编辑:程序博客网 时间:2024/04/29 22:05
MFC程序也是Windows 程序

        所以应该有一个WinMain,但在程序进入点之前,还有一个全局对象theApp, 这是所谓的应用程序对象。 当操作系统将程序加载并激活的时候,这个全局对象获得配置,其构造函数会先执行,比WinMain 更早。

        MFC 把具有相当固定行为的WinMain 内部操作封装在 CWinApp 中,把有着相当固定行为的WndProc 内部操作封装在 CFrameWnd 中。(软件向框架方向发展,封装进化ing~~)

      (一个MFC提供的源码文件(Winmain.cpp)中包含一个 AfxWinMain 函数,它在MFC 中的作用相当于 SDK 中的 WinMain, AfxWinMain 广泛使用应用程序对象,这就是为什么应用程序对象必须做全局声明的原因,全局变量和对象在任何其他代码执行以前被创建,在AfxWinMain 运行之前, 应用程序对象必须在内存中存在哦 )

        几乎可以说用 CWinApp 来取代 WinMain 在 SDK 程序中的地位,CFrameWnd 取代 SDK 程序中窗口函数的地位。

首先 MFC 程序需要下面函数库:

      (1) Windows C Runtime 函数库:LIBC.LIB / MSVCRT.LIB / MSVCRTD.LIB

     (2) DLL import 函数库: GDI32.LIB / USER32.LIB / KERNEL32.LIB (三个很重要的dll )

              gdi.dll 是 Windows GDI 图形用户界面相关程序,包含的函数用来绘制图像和显示文字

            user32.dll 是 Windows 用户界面相关应用程序接口,用于包括 Windows 处理, 基本用户界面特性,如创建窗口和发送消息,

             kernel32.dll 是Windows9x/Me 中非常重要的32 位动态链接库文件,属于内核级文件。控制着系统的内存管理,数据的输入输出操作和中断处理,当 Windows 启动时, kernel32.dll 就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。                           有时候, Windows 会弹出“非法页错误” 的消息框,简单的说,这是因为某个或多个程序试图访问 kernel32.dll 所占的内存保护区域, 从而产生冲突而造成的。 该错误一般是由某个特定的程序引起的,也可能是多个文件或程序。 如果是由某个程序引起, 那么可以尝试重新安装或升级该程序来解决问题,而如果由多个文件和程序引起的,那就极可能是因损坏的硬件设备驱动引起的哦。      

      (3) MFC 函数库(AFX函数库): MFC42.LIB /   MFC42D.LIB ......

同时,MFC 程序需要下面的头文件:

               1)Stdafx.h : 预编译头文件,其内只是载入其他的 MFC 头文件。

               2)Afxwin.h : 每个 MFC 程序都必须载入它,因为它所载入的文件声明了所有的MFC 类, 此文件含有 Afx.h ,后者又载入 Afxvver.h , 后者又载入 Afxv_w32.h , 后者又载入 windows.h (SDK 程序必须要的头文件)

                3) Afxext.h :   使用工具栏,状态栏必须载入这个文件。

               4)Afxdlgs.h : 使用通用型对话框的 MFC 程序需要此文件,其内部载入 COMMDLG.H

               5) Afxcmn.h : 使用 Win9x 新增的通用型控件的MFC程序必须载入此文件。

               6)Afxcoll.h : 使用 Collections Classes 的程序要此文件。

               7) Afxres.h : MFC 程序的 RC 文件必须载入此文件。

(解释): 预编译头文件: 所谓预编译头文件是指将 .h 文件第一次编译后的结果保存起来,第二次编译的时候就可以直接从磁盘上取出来用。