VS中空项目、win32项目、控制台程序的区别

2023-05-16

一、区别

(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删除,由编译器自己决定也可以

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS中空项目、win32项目、控制台程序的区别 的相关文章

  • 【C#】VS2019 未能在命名空间“Microsoft.Win32”中找到类型名“RegistryKey” 的解决办法

    文章目录 前言解决方案 结语 前言 今天在写 C 实验的时候遇到了 未能在命名空间 Microsoft Win32 中找到类型名 RegistryKey 此类型已转发到程序集 Microsoft Win32 Registry Version
  • Win32窗口

    Win32窗口 span class token comment windows 开发所需头文件 包含Windows开发所需要的宏 类 函数 结构体等结构的定义 span span class token macro property sp
  • win32汇编寄存器汇总

    32位CPU所含有的寄存器有 xff1a 4个数据寄存器 EAX EBX ECX和EDX 2个变址和指针寄存器 ESI和EDI 2个指针寄存器 ESP和EBP 6个段寄存器 ES CS SS DS FS和GS 1个指令指针寄存器 EIP 1
  • win32 汇编基础概念整理

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 xff0c 似乎IP也是寄存器 xff0c 但只有在CALL RET在中会默认使用它 xff0c 其它情况很少使用到 xff0c 暂时可以不用理会 E
  • Windows下的Win32串口编程

    在工业控制中 xff0c 工控机 xff08 一般都基于Windows平台 xff09 经常需要与智能仪表通过串口进行通信 串口通信方便易行 xff0c 应用广泛 一般情况下 xff0c 工控机和各智能仪表通过RS485总线进行通信 RS4
  • VS2015项目属性配置中的变量设置

    关于VS的项目属性配置 很长时间都没有去细究关于各种定义的意义 比如说 outDir这样的东西以前没有细细追究过原因 这次都一并做个记录 1 常规页签 是对各个变量的解释输出目录 OutDir 中间目录 IntDir 目标文件名 Targe
  • Win32 Application 、Win32 Console Application、MFC工程项目

    Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序 Win32 Application 是标准 windows程序 完全拥有windows的特性 也即我们常说的窗
  • windows服务程序中创建用户进程

    最近碰到个问题 需要在服务中检测用户桌面的情况 但是服务程序都是SYSTEM账户下运行 属于Session0 不能检测到用户桌面的情况 所以就需要另启一个用户进程来获取这些信息 然后发送给服务 所以就用到了 CreateProcessAsU
  • 让Win32窗口程序拥有控制台窗口

    让Win32窗口程序拥有控制台窗口 首先 为什么我们有了普通窗口后还要控制台窗口呢 因为我们可以用它方便的输出调试信息 而且普通玩家看到了也会觉得很高端 如果他会输几条命令 可能他会以为自己就是黑客了 示例效果 WinMain作为入口函数后
  • 几何画笔

    在看书时看到了这个概念 画笔可以分为几何画笔和装饰画笔 目前从CSDN以及MSDN上大致看了一下几何画笔的用法 代码如下 HPEN hPen NULL DWORD dwStyle PS GEOMETRIC PS DASHDOT PS END
  • 窗口子类化和超类化

    目录 窗口子类化 窗口超类化 窗口子类化 窗口子类化的目的是在不修改现有代码的前提下 扩展现有窗口 控件的功能 它的思路很简单 就是将窗口过程地址修改为一个新函数地址 新的窗口过程函数处理自己感兴趣的消息 将不感兴趣的消息丢给原窗口过程处理
  • MFC视频教程(孙鑫)学习笔记2-掌握C++

    这一集中 主要总结了C 经典语法与应用 1 C 的三大特性 封装 继承 多态 2 C 中提供了一套输入输出流类的对象 它们是cin cout和cerr 对应c语言中的三个文件指针stdin stdout stderr 分别指向终端输入 终端
  • 桌面下雪小程序 WIN32

    想起以前还没有上大学的时候 过圣诞节 有同学发了一个桌面下雪的小程序 当看到效果的 哇 当时觉得好高端 就想什么时候我也能写出这么一个程序 学了计算机之后 发现这完全可以实现 于是就准备写一个 当卡壳的时候在网上找资料 结果发现在网上找到的
  • winMain函数

    WinMain函数 int WINAPI WinMain HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nShowCmd 函数名 WinMain 返回值 in
  • WIN32 代码测试(Control)

    include
  • WIN32 资源

    首先解释一下句柄 win32中的句柄在数值上表示一个32位的数 用来标识应用程序 进程中不同对象以及同类对象中的不同实例 而所谓实例就是指被实例化的对象 实例化的过程就是通过类创建对象的过程 实例化对象的目地是为对象开辟内存空间 所以句柄是
  • Win32API学习笔记第三章

    这次记录的是鼠标与键盘的消息和部分相应API的使用如与标准 本人学的是Win程序设计第五版 有偏差 或哪里有不妥 欢迎大家给予斧正 一 键盘 初阶 Windows有8种不同的消息来传递不同的键盘事件 但是其中的大部分是我们一般不会去处理的
  • Windows编程基础--第2节 win32程序资源管理

    操作系统 win10 64位 IDE vc 6 0 windows程序都有自己的资源 例如按钮 图标 对话框等等 这节介绍如何使用win32程序资源管理 1 继续使用上节的win32程序demo 执行File gt new添加资源 选择Fi
  • WiFiAssistant 无线承载网络设置助手的开发历程(一)

    今年6月中旬 我曾经基于MFC写过一个WiFiHelper的小程序 开启和关闭虚拟WiFi 并且能够支持定时关机 当然 真正使用虚拟WiFi还需要手动设置共享 并且 由于我的是台式机 所以并没有去升级WiFiHelper 估计是即将毕业的缘
  • 19_复制目录下所有文件夹和目录CopyFile()

    复制目录下所有文件夹和目录CopyFile 想一下 若要复制文件夹 可以在目录位置新建一个文件夹 然后将源文件夹中里面的文件进行遍历 一个一个的复制到目标文件夹中即可 void EnumCopyFile 输入参数 TCHAR szSrcRo

随机推荐

  • linux环境安装jdk

    linux环境安装jdk 1 查看本环境下是否java环境 java version 不存在 已存在 2 如果不存在 xff0c 先去下载jdk 到官网下载jdk 注 xff1a 一定要根据具体的linux系统按需下载对应的安装包 我的是l
  • linux环境下安装tomcat

    配置tomcat 到官网下载tar包 将tar包上传到服务器 并解压 span class token function tar span zxvf apache tomcat 9 0 65 tar gz 重命名tomcat9 span c
  • docker基础命令以及常用命令

    docker 基本命令 1 其他命令 span class token comment 查看版本 span docker version span class token comment 查看信息 span docker info span
  • Redis基础数据结构及其使用

    Redis 一 xff0c docker方式安装redis span class token comment 拉取 redis 镜像 span span class token operator gt span span class tok
  • 设计模式之--原型模式

    原型模式 原型实例指定创建对象的种类 xff0c 并且通过复制这些原型创建新对象 使用场景 xff1a 类初始化消耗资源比较多 使用new生成一个对象需要非常繁琐的过程 构造函数比较复杂 在循环体中产生大量对象 浅克隆 浅克隆只是完整复制了
  • redis分布式锁使用方式

    为什么使用锁 xff1f 锁的作用是要解决多线程对共享资源的访问而产生的线程安全问题 当多个线程并发操作某个对象时 xff0c 可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修
  • Redis的延时队列

    延时队列 redis的list数据结构用来做一部消息队列 xff0c 使用rpush lpush操作入队列 使用lpop rpop来出队列 span class token operator gt span rpush notify que
  • 设计模式---代理模式

    代理模式 proxy pattern 定义 xff1a 指为其他对象提供一种代理 xff0c 以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 使用目的 保护目标对象增强目标对象 解释 Subject是顶层接口 xff0c
  • 04747 java程序设计笔记 --多线程

    文字篇 线程概念 进程 程序在处理机的一次运行 xff0c xff08 从代码加载 xff0c 执行至完毕的一个完成过程 xff09 线程 进程执行过程中产生的多条执行线索 xff0c 比进程单位更小的执行单位 它没有出口 xff0c 没有
  • Kubernetes(k8s)基础

    pod Pod是什么 Pod是Kubernetes创建或部署的最小单位 是Kubernetes集群中的一个应用实例 xff0c 总是部署在同一个节点Node上 Pod中包含了一个或多个容器 xff0c 还包括了存储 网络等各个容器共享的资源
  • 04747java程序设计 之 输入输出流

    输入输出流 数据流 概念 数据流指一组有顺序的 xff0c 有起点和重点的字节集合 输入流 概念 只读 xff0c 用于向计算机内输入信息使用 主要的读取方法 int read 从输入流中读取一个字节的二进制数据 int read byte
  • 04747java程序设计 -- 继承与多态

    继承与多态 子类 is a 关系 整体与部分 has a extends 继承关键词 父类也叫做 超类 基类 object 类 类层次最高点 xff0c 是所有类的直接或间接父类 方法 public final Class getClass
  • 03731计算机网络原理 - 计算机网络概念 脑图整理

  • 03137计算机网络原理 - 计算机网络体系结构

  • 03137计算机网络原 - 物理层

    物理层 基础概念 OSI模型最底层 功能 为在链路实体间传送比特流而对物理连接的 接通 维持 和 拆除 提供机械 电气 功能和规程方面的方法 作用 尽可能屏蔽现有多种多样的硬件设备 传输媒体和通信手段的差异 确保原始数据可以在各种物理媒介上
  • 03137计算机网络原理 - 数据链路层

    数据链路层 功能 定义 基本功能是 向该层用户 提供透明和可靠的数据传送基本服务 帧和介质访问控制 数据链路层 是 对物理层传输原始比特流功能的加强 将物理层提供的可能出错的粗粒连接改造成逻辑上无差错的数据链路 使之对网络层表现为无差错的线
  • 彻底卸载Android Studio

    在安装Android Studio会有很多问题导致无法正常运行 xff0c 多次下载AS多次错误后了解到 xff0c 删除以下四个文件才能彻底卸载Android Studio 第一个文件 xff1a gradle 路径 xff1a C Us
  • Linux远程登录

    L i n u x 远程登录
  • 03_SpringBoot项目配置

    文章目录 SpringBoot项目配置0x01 properties格式配置文件0x02 yml格式配置文件配置对象类型数据配置集合类型配置数组类型 0x03 properties和yml的区别优先级区别 0x04 配置文件在项目中的位置0
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c