转自:http://blog.csdn.net/c_base_jin/article/details/52304845
在windows编程中,我们或多或少都听说这三个名称,分别是Win32 Console Application、Win32 Application、MFC。估计也有很多人,对此感到疑惑,今天从网络上收集了资料,并整理归纳,完整的介绍三者内在联系。
Win32 Console Application
Win32 Console Application是指win32控制台应用程序,属于CUI(Character User Interface字符用户接口)程序,往往是像MS-DOS窗口样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的。控制台应用程序以main()函数为入口。
Win32 Application
Win32 Application是指SDk程序,是属于GUI(Graphics User Interface 图形用户接口)程序,就是常见的窗口应用程序,我们可以通过鼠标点击来完成控制。程序以WinMain()为入口,能够使用win32 API函数完成窗口设计等
MFC
MFC(英语:Microsoft Foundation Classes)是一个微软公司提供c++类库,主要封装了大部分的windows API函数,以减少应用程序开发人员的工作量,在MFC类中包含了大量Windows句柄封装类和Windows的内建控件以及组件的封装类。
MFC除了是一个类库以外,还是一个框架,在IDE(集成开发环境,Integrated Development Environment)里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以在生成的代码中看不到原本的SDK编程中的消息循环、窗口设计等东西。
区别和联系
相同点:
它们都是工作于32位Windows环境。
区别点:
1.Win32 Application 和 Win32 Console Application 之间的区别
- Win32 Application 是标准windows程序,完全拥有windows的特性,可以通过鼠标点击窗口来完成控制,
- Win32 Application 入口函数是WinMain(),它具有消息响应机制,可以运行图形化的C++程序。
- Win32 Console Application是控制台应用程序,类似于MS-DOS窗口,只能运行命令行程序,不具备消息响应机制。
- Win32 Console Application入口函数是main(),可以访问部分windows API函数,如果你编写传统的C程序,必须建立Win32 Console程序。
2.MFC和Win 32的区别
- Win 32编程需要自己建立消息处理机制,
- MFC是直接做消息映射(MESSAGE-MAP机制).
- 两者相比,win32更底层,MFC是对win32的封装,使用起来更加方便。
在新建项目时,可以选择项目类型,从而决定我们的应用程序是基于MFC框架还是Win32 编程,可选类型如下图。
图1 项目类型选择