转自: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 项目类型选择

Win32 Console Application、Win32 Application、MFC三者之间的联系和区别的更多相关文章

  1. Git、GitHub、GitLab三者之间的联系以及区别

    在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制系统. 版本控制是一种用于记录一个或多个文件内容变化,方便 ...

  2. Git-GitHub-GitLab三者之间的联系及区别

    在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制系统. 版本控制是一种用于记录一个或多个文件内容变化,方便 ...

  3. 说说SpringMVC、SpringBoot和SpringCloud三者之间的联系和区别

    这个问题是我在参加一次面试晚会活动上被问到的一个问题,看标题显然很简单就能够回答出来,但是仔细一琢磨,平时蒙头苦干的我们可能缺少关注和积累,好像并不能用较专业的术语和逻辑很顺畅的表达出来,于是我简要的 ...

  4. JavaScript、TypeScript、ES6三者之间的联系和区别

    ES6是什么 ECMAScript 6.0(以下简称ES6)是JavaScript语言(现在是遵循ES5标准)的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以 ...

  5. win32 console application 如何修改图标?

    win32 console application ,不要看这名字高端大气上档次,让你摸不着头脑,其实他就是我们最先学习c语言那种黑色窗口的东西......话说他怎么修改图标呢?第一种方法是:右键-〉 ...

  6. 用vs2008和vs2005创建win32 console application

    http://blog.sina.com.cn/s/blog_4900be890100s735.html 对于经常使用vc6.0的人来说,创建一个win32 console application很简 ...

  7. win32程序中简单应用mfc

    今日写程序在win32中用CRect发现报错,突然想起来.要引入mfc库.想重新建立一个工程添加对mfc的支持.发现选项不能选.查资料后发现. 在win32程序中简单应用mfc库,只需要简单的引入&l ...

  8. API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别

    [原]API.Win32 SDK.Win32项目.MFC.Windows窗体应用程序的区别 首先来看一下每一个术语的定义: API:Application Programming Interface. ...

  9. [Win32::Console]Perl终端版生命游戏

    环境,WinXP/Win7  Perl 5.16 默认循环1000次,按ESC提前退出 use strict; use Term::ReadKey; use Win32::Console; use T ...

随机推荐

  1. Neo4j与springdata集成

    1.maven工程需导入的jar包 <!-- neo4j --> <dependency> <groupId>org.springframework.data< ...

  2. 2019-8-31-dotnet-启动-JIT-多核心编译提升启动性能

    title author date CreateTime categories dotnet 启动 JIT 多核心编译提升启动性能 lindexi 2019-08-31 16:55:58 +0800 ...

  3. [Ceoi2010]Pin

    #2012. [Ceoi2010]Pin Online Judge:Bzoj-2012 Label:容斥,STL 题目描述 给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D ...

  4. 20191004-gugugu公告

    作者洗手不干了,所以以后可能会不写考试反思而是要写题解了…… ××这是$Day7$,于是我跪了 (不会,于是准备自己$YY$) 加油啊$LNC$你一定能$AK$的(雾 但是他因为太愧疚而没有打症结而是 ...

  5. sqlserver 如何按年按月创建分区函数

    我创建了分区函数如下:create partition function pf_month1(varchar(8))as range left for values ('20120131','2012 ...

  6. 做网站-mysql表字段设计

    https://mp.weixin.qq.com/s/HhdbmQqKmiw9IVnnL0Zyag VARCHAR与CHAR如何选择 使用VARCHAR理由 字段不经常更新 字段比较长,且长度不均(比 ...

  7. 组件:组合slot

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  8. opencv4 java投影

    工程下载 https://download.csdn.net/download/qq_16596909/11505994 比较适合与验证码的处理,毕竟八邻域降噪不能消除比较大的噪点,为了尽量减少噪点对 ...

  9. MySQL-Utilities:mysqldiff

    园子看到使用MySQL对比数据库表结构,参考测试发现 mysql> use test; create table test1 (id int not null primary key, a ) ...

  10. mavenjar 一些拉取不下来问题

    http://search.maven.org/这里找相近版本替换试试.拉取不下来是因为官方版本不足或者网络问题.