空项目,大多数想单纯创建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. verilog 数据格式

    基数格式(通常为无符号数)[size]'base value size常量的位数 base数制o:8 b:2 d:10 h:16 https://wenku.baidu.com/view/f63daa ...

  2. Lucene 分析的意思是按照某种规则进行内容拆分 支持模糊搜索

    Lucene 分析的意思是按照某种规则进行内容拆分 里面的域的值是拆分后的内容

  3. Linux管理用户和组

    用户管理相关命令useradd        添加用户adduser        添加用户userdel         删除用户passwd         为用户设置密码usermod      ...

  4. 关于jQuery.when()用法的调研

    1.该方法在jQuery1.5开始被引入. 2.用法测试 a.var url1 = "/resource/ar/hometab/index_tab_games.json",     ...

  5. POJ3122-Pie-二分答案

    有N个派,F+1个人,每个人分到的体积要相等,而且每个人只能有一块派. 二分答案,对于一个mid,对每个派进行检测,尽量的多分,然后如果份数比F+1大,说明mid可以更大,就把mid给low.注意份数 ...

  6. ef group 封装

    表达式树,传递 group public class Test<T> where T : class { MoviesEntities db = new MoviesEntities(); ...

  7. MT【217】韦达定理应用

    若2018次方程$x^{2018}-4036x^{2017}+a_{2016}x^{2016}+\cdots+a_1x+a_0=0$ 有2018个正实数, 则对于所有可能的方程$\sum\limits ...

  8. HNOI2017大佬

    贼难的一道题 虽然算法都不难,但组合起来就是想不到 首先,最简单的一步,对所有大佬,嘲讽你减的自信值和你做水题回复自信值都是不变的,写个\(dp\),设\(dp[i][j]\)表示第\(i\)天自信值 ...

  9. Leetcode 347.前K个高频元素 By Python

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...

  10. 逆向---01.Nop、中文字符串搜索、保存修改后程序

    基础知识:(Nop:删除跳转) gcc编译链接命令: gcc -o 生成文件名 源文件名  gcc编译成汇编代码:gcc -o 生成文件名 -S 源文件名 VS查看汇编代码:(调试模式下,Ctrl+F ...