空项目,大多数想单纯创建c++工程的新同学,打开vs后很可能不知道选择创建什么工程,这时候请相信我,空项目是你最好的选择。因为空工程不包含任何的源代码文件,接下来你只需要在相应的源代码文件夹和头文件文件夹加入相应的.cpp和.h文件即可。(注:对于首次使用vs的新同学来说,运行程序的时候很可能,闪一下就不见了,请不要着急,这是因为vs软件本书没有加上停止的代码,我们自己动手加上就好了。每次写程序的时候,我们需要include头文件stdlib.h,然后在程序末尾加上system(“pause”),你会发现程序停下来了,是不是很开心。)

接下来说一下win32控制台应用程序、win32项目、mfc项目这几个货的区别:

我的理解,我首先把这几个货分为两大类;第一类包括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删除,由编译器自己决定也可以
---------------------
作者:Adam_Song
来源:CSDN
原文:https://blog.csdn.net/sl850216662/article/details/78642802
版权声明:本文为博主原创文章,转载请附上博文链接!

VS中空项目、win32项目、控制台程序的区别(转)的更多相关文章

  1. windows下控制台程序实现窗口显示

    windows下实现窗口显示,如果限定是C/C++语言,并且是原生Windows支持,需要使用GDI或GDI+.一般是在Visual Studio里新建Win32应用程序,而不是Win32 conso ...

  2. C++控制台程序中使用定时器

    转自博客:http://www.cnblogs.com/phinecos/archive/2008/03/08/1096691.html 作者:洞庭散人 “我现在项目是一个控制台程序,用到的Win32 ...

  3. 9 在C#控制台程序(console)中让用户输入

    经过前面那些练习,我们已经熟悉录入一些简单的代码.这些代码可以进行一些简单的运算,在dos窗口打印出一些东西出来.我们现在要开始学习如何把数据从外部输入到我们的程序中. 其实大多数程序的工作是完成下面 ...

  4. Visual Studio C++ Win32控制台应用程序,Win32项目,MFC的区别

    背景 Visual Studio C++ 创建新项目蹦出来如下选项: Win32控制台应用程序,Win32项目,MFC有什么区别? 正文: Win32控制台,没有界面,命令行执行生成的文件则直接在后台 ...

  5. VS2017:win32项目与win32控制台应用程序的转换方法

    原文:https://www.cnblogs.com/asuser/articles/12297251.html 刚开始使用VS2017新建项目工程时,有时把应用类型的工程建成控制台类型的工程,在编译 ...

  6. Win32控制台、Win32项目、MFC项目、CLR控制台、CLR空项目、空项目区别

    转载:https://blog.csdn.net/zfmss/article/details/79244696 1.Win32控制台 初始代码模版以main为程序入口,默认情况下,只链接C++运行时库 ...

  7. VisualStudioCode中用dotnet命令创建多个ASP.NET Core 项目、类库、控制台程序,并添加应用间的引用

    一.准备工作 首先安装VisualStudioCode并且可以使用. 1.首先新创建空的MyApps文件夹,作为项目主目录,下面将在这个文件夹中创建多个web应用程序.类型.控制台程序等. 2.打开V ...

  8. .net core 第二篇控制台程序项目初步学习

    1. 使用vscode 创建一个控制台程序 创建项目默认创建的项目名称为父级文件夹名称 后面学习下创建的命令各个参数说明 运行项目dotnet run 其他命令SDK 命令:add 将包或引用添加到 ...

  9. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...

随机推荐

  1. python之tkinter使用-Grid(网格)布局管理器

    # 使用tkinter编写登录窗口 # Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列 # stricky设置对齐方式,参数N/S/W/E分别表示上.下.左.右 ...

  2. python 抽象类与接口类

    几个类 实现的方法都一致的话 就继承同一个父类 在父类写一个公共方法 给子类使用

  3. Ubuntu 16.04安装Maven

    此篇为http://www.cnblogs.com/EasonJim/p/7139275.html的分支页. 前提:必须正确安装JDK. 一.通过二进制包(tar.gz)安装 下载: 进入下载列表:h ...

  4. BZOJ2631tree——LCT

    题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一:+ u v c:将u到v的路径上的点的权值都加上自然数c:- u1 v1 u2 v2:将树中原有的边( ...

  5. JavaScript——根据数组中的某个值进行排序

    我这里是根据次数进行倒叙,可根据自己情况进行修改 function sortKey(array,key){ return array.sort(function(a,b){ var x = a[key ...

  6. ueditor 使用

    之前在微信上用到富文本编辑器,选用了ueditor 之后又在项目中使用到了,因此打算写下来记录一下. 1  首先去下载ueditor 2  我的是 MVC项目,贴一下:粘贴到Content下 3 然后 ...

  7. Java8 使用

    Java8 使用 链接:https://www.jianshu.com/p/936d97ba0362 链接:https://www.jianshu.com/p/41de7b5ac7b9 本文主要总结了 ...

  8. MT【234】正方形染色(二)

    有$n$个正方形排成一行,今用红,白,黑三种颜色给这$n$个正方形染色,每个正方形只能染一种颜色.如果要求染这三种颜色的正方形都是偶数个,问有多少种不同的染色方法. 解答: 设有$a_n$种不同的染法 ...

  9. apache 限制连接并发数和下载速度

    apache 限制并发数 需要安装:mod_limitipconn模块 安装方法:yum install mod_limitipconn 安装完成后: 检查 Apache 模块目录,看是否含有 mod ...

  10. 自学Aruba3.1-Aruba配置架构-WLAN配置架构

    点击返回:自学Aruba之路 自学Aruba3.1-Aruba配置架构- WLAN配置架构  WLAN配置架构 1. AP group : Aruba无线控制器通过AP Group来构建无线网络配置参 ...