转载:https://blog.csdn.net/zfmss/article/details/79244696

1.Win32控制台

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

2.Win32项目

初始代码模版实现一个简单的windows窗口,以WinMain作为程序入口,引用了win32Api头文件和库,链接器subsystem参数为windows,编译出来会有一个简单的窗口。

3.MFC项目

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

4. 如何选择

windows提供win32 api以供程序员完成各种操作,所以控制台,win32,mfc都可直接调用win32 api。

但直接使用win32 api,用代码完成诸如创建窗口,显示窗口等操作太过繁杂,于是我们把这些代码结合抽取取来,变成OOP中的类,也就是微软基础类库(MFC)。

采用控制台还是win32 MFC,取决于是否需要同用户进行交互,以及交互的频率是高还是低。字处理软件需要实时查看编辑成果,所以采用了窗口;而一个木马程序,采用了窗口就会暴露自己,所以采用控制台。

需要与用户进行大量交互或者要满足“所见即所得”,采取wn32 mfc;无需交互或者交互极少,采用控制台。

只强调实用与开发效率,用MFC;强调用户体验与软件细节,使用WIN32。MFC可以实现的,WIN32都可以实现。反之不可。

5.CLR控制台

CLR控制台指的是使用C++语言开发基于.NET FRAMEWORK的控制台程序。

也就是说,C++可以直接调用.NET的功能强大的类库,处理更多的事情,实现更多的功能,可以精简几乎50%以上的代码。

WIN32控制台程序,是指用C++语言开发基于控制台的程序,也就是类似于CMD程序。

WIN32窗体应用程序,是指用C++语言开发基于SDK的窗体程序,你看到的QQ,就是一个窗体程序。

1 ATL项目,使用活动模板库的项目。用来做COM开发。
2 CLR项目,与ATL类似。不过CLR是一个体系。用这个创建出来的工程,在所有支持CLR的编译器内均可以无障碍移植。
3 MFC项目,可以使用MFC的类库。MFC是微软提供的用来windows开发的一个工具包。
4 Win32项目,windows开发项目。可以使用windows相关API。与MFC不同的是,这里都是直接使用windowsAPI。
5 除此以外,最常用的是命令行项目,即console。初学者使用这一个就足够了。

Win32控制台、Win32项目、MFC项目、CLR控制台、CLR空项目、空项目区别的更多相关文章

  1. MFC下调用控制台和控制台下MFC库的支持

    1.MFC下调用控制台 在CWinApp的InitInstance中对话框的DoModal之前加入 AllocConsole(); // 开辟控制台 SetConsoleTitle(_T(" ...

  2. 在WIN32 DLL中使用MFC库遇到的问题

    今天写了一个DLL,DLL中用到的一个类里用到的MSXML的COM组件,所以在DLL中要包含afx.h头文件,也就不可避免的要用到MFC的类库了,但在编译时出现了错误:mfcs42d.lib(dllm ...

  3. MFC,ATL,CLR简介

    MFC.ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用.当然关于 C++ 开发的库不止这3个,不过这3个是微软推荐.从编程所处层次而言,WIN32为最底层,其次 ...

  4. 小白教程 Java web maven项目Windows下部署阿里云服务器全过程(买服务器,打包项目,连接服务器,配置服务器,部署项目)

    -------------首先:购买服务器---------------- Step1: 在https://www.aliyun.com/?utm_content=se_1043015注册登录阿里云 ...

  5. 基于空项目模板创建使用Owin来host的WebApi项目

    首先创建一个空的web项目,如下图所示: 项目创建成功以后,安装下面三个package. Install-Package Microsoft.AspNet.WebApi -Version 5.2.2I ...

  6. VS2013项目受源代码管理向源代码管理注册此项目时出错

    在使用TFS的时候有时出现无法加载项目,后来删除项目添加也是不行 编译项目的时候提示如题的错误,用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就行了. <SccProject ...

  7. 在 VS 类库项目中 Add Service References 和 Add Web References 的区别

    原文:在 VS 类库项目中 Add Service References 和 Add Web References 的区别 出身问题: 1.在vs2005时代,Add Web Reference(添加 ...

  8. Maven项目搭建(三):Maven直接部署项目

    上一章给大家讲解了如何使用Maven搭建SSM框架项目.   这次给大家介绍一下怎么使用Maven直接部署项目.   Maven直接部署项目  1.新建系统变量CATALINA_HOME,值为:Tom ...

  9. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

    mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...

随机推荐

  1. laravel Application实例化后两个方法

    laravel容器初始化registerBaseServiceProviders方法 上篇讲解了laravel容器的基本使用和原理,这篇继续Application构造方法中的registerBaseS ...

  2. 使用DataStax Java驱动程序的最佳实践

    引言 如果您想开始建立自己的基于Cassandra的Java程序,欢迎! 也许您已经参加过我们精彩的DataStax Academy课程或开发者大会,又或者仔细阅读过Cassandra Java驱动的 ...

  3. 关于`ClawHub的技术分享`公众号

    生命不息,折腾不止! 该公众号的内容大部分为平时学习积累所整理的笔记,包括但不限于源码.原理.经验等. 如果感兴趣,也可以访问clawhub的博客主站https://clawhub.club

  4. leetcode刷题-49字母异位词分组

    题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 思路 由于异位词由相同字母构成,所以可以用一个顺序的字符串作为这些字母异位词的标志,由此可以想到字典的方法 ...

  5. pwnable.kr之flag

    拿到文件,先运行一下,输出: I will malloc() and strcpy the flag there. take it. 用python查看文件是否有什么保护, Arch: amd64-- ...

  6. 双向绑定数据的实现(new Proxy 版本)

    调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  7. linux账户的锁定和解锁、禁用账号

    l——lock锁定 S——STATUS查看 u——unlock解锁 1.通过passwd命令锁定和解锁: [root@localhost ~]# passwd -S abc ——passwd -S  ...

  8. 本机ping不通虚拟机,但虚拟机可以ping通本机

    在各自网络都连接的情况下,本机ping不通虚拟机,但虚拟机可以ping通本机时解决方案: 1.linux虚拟机中连接方式选择NAT模式 2.本地启动VMnet8,然后选择VMnet8的属性,手动输入和 ...

  9. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...

  10. SpringCloud系列之Nacos+Dubbo+Seata应用篇

    目录 前言 项目版本 项目说明 Nacos服务 Seata服务 订单模块 支付模块 参考资料 系列文章 前言 本文接上篇文章<SpringCloud系列之Nacos+Dubbo应用篇>继续 ...