我的理解,我首先把这几个货分为两大类;第一类包括win32控制台应用程序,第二类就是剩下那俩货。而剩下那俩货又有一个包含关系,即win32项目包含mfc。(我个人是这个区分的。)

一、 区别:

(1)Win32控制台程序,没有界面,只有命令符。生成的“.exe”文件直接运行操作即可。

(2)Win32项目,有界面。但是界面里面的控件,基本上要自己去实现。

(3)MFC应用程序,也有界面,但界面里的控件不需要自己去实现了,常用的控件都已经在MFC库内写好,直接拖动即可。

(4)控制台与Win32、MFC的交互方式不同,前者采用的是CML(命令模式,也有人说是CUI(Console user Input)),后者是GUI(用户界面)

(5)Win32项目的界面比较符合UI界面设计;而MFC应用程序的界面基本都是一样的,因为它们都是用同一套控件模板。

(6)Win32控制台程序:初始代码模版以main为程序入口,默认情况下,只链接C++运行时库和一些核心的win32库,链接器subsystem参数为console类型,所以编译出来的程序会有黑色的控制台窗口作为呈现标准输入(stdin)和标准输出(stdout)。

Win32项目:初始代码模版实现一个简单的windows窗口,以WinMain作为程序入口,引用了win32Api头文件和库,链接器subsystem参数为windows,所以生成的程序不带黑色的控制台,直接使用标准输入和标准输出,看不到效果。

MFC应用程序:本质上是个win32工程,只是默认帮你引用了mfc框架的头文件和库,并且程序入口由mfc框架提供,不需要自己写。

二、联系:

windows提供win32 api以供程序员完成各种操作,所以控制台,win32,mfc都可直接调用win32 api。但直接使用win32 api,用代码完成诸如创建窗口,显示窗口等操作太过繁杂,于是我们把这些代码结合抽取出来,变成OOP中的类,也就是微软基础类库(MFC)

三、转换:

因为两大类的区别主要是定义的宏不一样,win32 项目和mfc的为WINDOWS,win32控制台的为CONSOLE,所以:在预处理中把_WINDOWS换成_CONSOLE就行了 。  project  settings  ->  Link  :将/SUBSYSTEM:WINDOWS开关改为/SUBSYSTEM:CONSOLE  。另外, 可将  Win32控制台程序  当成  在Win32项目  使用,反之亦然。/subsystem:windows或/subsystem:console删除,由编译器自己决定也可以

Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:相关推荐

  1. Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件

    原配的Visual Studio 2015专业版不像之前的版本,在新建项目里面是找不到Win32模板的,那么怎么才能新建Win32项目和Win32控制台应用程序呢?今天我就带大家做一简单介绍. 先看如 ...

  2. 基于win32控制台应用程序的双人俄罗斯方块小游戏

    1. 课题概述 1.1 课题目标和主要内容 使用visual studio 2015在win32控制台应用程序下用多线程实现双人同时进行俄罗斯方块的桌面游戏.最终将要完成的效果如图1.1所示,左右共两 ...

  3. Win32控制台应用程序,Win32项目,MFC应用程序的区别与联系

    Win32控制台应用程序,Win32项目,MFC应用程序的区别与联系 Win32控制台程序 初始化代码模板以Main为程序入口,默认情况下,只链接C++运行时库和一些核心的Win32库,链接器subs ...

  4. VC++6.0 win32 控制台应用程序 简单应用 附代码

    **VC++6.0 win32 控制台应用程序 简单应用 附代码 ** .cpp 文件名 注意:在源文件添加如下声明: #include //没有.h using namespace std;//使用 ...

  5. 使用 Visual Studio 调试 .NET 控制台应用程序

    本教程介绍了 Visual Studio 中提供的调试工具. 先决条件 本教程适用于在使用 Visual Studio 创建 .NET 控制台应用程序中创建的控制台应用. 使用"调试&quo ...

  6. 在Windows程序中打开控制台的程序

    //在Windows程序中打开控制台的程序 #include <stdio.h> #include <io.h> #include <fcntl.h> BOOL C ...

  7. Visual Studio中怎样更改Nuget程序包源

    场景 Visual  Studio 2019 在使用NuGet添加依赖包时,在预览中搜索不到程序包. 排查下NuGet的程序包源为本地. 将程序包源修改下. 注: 博客: https://blog.c ...

  8. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架

    目录 介绍 存储库和数据库 设计理念 数据 UI 解决方案结构 界面结构 页面 路由视图 布局 表单 控件 Blazor.Database项目 Program.cs ServiceCollection ...

  9. Win32控制台应用程序如何调用另一个.exe

    WinExec(); 该函数只提供对16位机子的兼容.应用程序应该使用CreateProcess函数. WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指 ...

最新文章

  1. SQL2005 BCP
  2. Python3基础 if __name__ == '__main__'
  3. 走向无后端的系统开发实践:CRUD自动化与强约定的REST接口
  4. Delphi中的容器类(3)
  5. 前端学习(2701):重读vue电商网站22之如何重定向路由
  6. ubuntu安装wine之后进不了系统
  7. 低智商屌丝蒟蒻的2012成都题解
  8. nginx代理php不能跳转页面,nginx 解决首页跳转问题详解
  9. c语言 json解析器,撸一个JSON解析器
  10. html5原生自带的日期控件和时间控件
  11. 身份证识别鉴别证件真假
  12. Swagger导出pdf文档
  13. 【ROS基础】.launch文件语法记录
  14. 以下哪个不是迭代算法的缺点_深究递归和迭代的区别、联系、优缺点及实例对比...
  15. 2020_ICML_Neuro-Symbolic Visual Reasoning: Disentangling “Visual” from “Reasoning”
  16. [论文]欠驱动水下机器人的平面轨迹规划与跟踪控制设计
  17. [抄袭]年薪五万程序员的生活及他的理财梦
  18. Android UI设计 下拉菜单Spinner用法 动态添加删除Spinner菜单项
  19. springboot支付宝APP支付与退款
  20. windows下搭建python+selenium环境(批量删除sina微博)

热门文章

  1. linux6.5安装oracle,linux [CentOS 6.5]下安装oracle
  2. 前端页面预览word_jquery.media.js实现前端页面预览
  3. 什么是光纤放大器?光放大器的原理是什么?
  4. 工业POE供电交换机在安防应用中的优势有哪些?
  5. PoE交换机如何才能稳定连接和安全使用?
  6. 【渝粤教育】国家开放大学2018年秋季 0653-21T机电控制与可编程控制技术 参考试题
  7. 【渝粤教育】国家开放大学2018年秋季 0017-22T大学英语 参考试题
  8. 【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)
  9. 【渝粤教育】电大中专电子商务网站建设与维护 (11)作业 题库
  10. 【渝粤教育】广东开放大学 电子商务(本) 形成性考核 (21)