首页 > 其他分享 >《Win32篇》空项目、Win32项目、MFC项目、Win32控制台的区别

《Win32篇》空项目、Win32项目、MFC项目、Win32控制台的区别

时间:2023-07-27 11:56:59浏览次数:48  
标签:win32 MFC 窗口 项目 Win32 mfc 控制台

空项目、Win32项目、MFC项目、Win32控制台的区别

参考链接:https://www.cnblogs.com/MCSFX/p/13267287.html
参考链接:https://www.zhihu.com/question/20524989/answer/17575697

空项目

image

控制台

控制台没有窗口,控制台与有窗口的(例如:win32、mfc)交互方式不同,前者是CML(命令模式),后者是GUI(用户界面)。
①初始代码,以main为入口
②默认下,只链接c++运行时库和一些核心的win32库
③链接器subsystem,参数为console类型
④编译后,会有控制台,做为标准输入stdin和标准输出stdout
image

win32

①初始代码,实现一个简单的windows窗口,以WinMain为程序入口
②默认下,引用了win32Api头文件和库
③链接器subsystem,参数为windows
④编译后,会有一个windows
image

MFC项目

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

image

MFC的界面风格特别好区分,简单来说就是“简陋”风格,跟win32自定义的不一样。
image

“简陋”风格的原因是MFC都用了同一个UI风格。
image

CLR控制台

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

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

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

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

如何选用它们

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

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

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

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

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

创建一个窗口:
以前用win32,我们这样:写,写,写代码!
image

后来有了MFC,我们这样:XXX控件哩!需要哪里点哪里!
image

标签:win32,MFC,窗口,项目,Win32,mfc,控制台
From: https://www.cnblogs.com/fusio/p/17584571.html

相关文章

  • MFC-realloc修改数组容量
     TCHAR*p,*q;//分配初始内存空间p=(TCHAR*)malloc(10*sizeof(TCHAR));//初始化p中的数据for(inti=0;i<9;i++){*(p+i)=_T('a');}*(p+9)=_T('\0');//扩容pq=(TCHAR*)realloc......
  • 《MFC篇》MFC文件结构
    MFC文件结构(VS2015为例)原文链接:https://blog.csdn.net/fuhanghang/article/details/109826297在VS2015中创建完项目之后,会自动生成下面的文件结构:包括引用、外部依赖、头文件、源文件、资源文件、ReadMe。下面对这些文件进行分类描述:1、和项目名称相同的有两个文件比如说我......
  • 创建vue项目
    1.vuecreateprojectname  2.选择vue33.创建成功 4.启动项目  5.在package.json中,查看启动命令,有时候不是npmrunserve  6.安装插件安装axios:npmiaxios安装bootstrap:[email protected]在main.j......
  • 在GO语言中项目中使用zap日志库
    在GO语言中项目中使用zap日志库本文先介绍了GO语言中原生的日志库中使用,然后想继续介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。在GO语言项目中使用zap日志库介绍在许多go语言项目中,我们需要一个好的日志记录器能够提供下面这些功......
  • 浅谈Excel开发:八 Excel 项目的安装部署
    前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用......
  • 【Java】信创开发(东方通)中台后端项目踩坑小记
    在万事国产化以备世界风云突变之日,我们做软件开发的也不可避免的需要完成一部分信创项目,通常Web项目国产化部署的首要选择都是东方通Web容器。此次中台项目信创适配过程中踩坑无数,唯独这个坑让我印象深刻念念不忘,接下来就请诸君与我共同复盘一下。背景:中台项目源于ruoyi开......
  • 【项目实战】手把手教你利用博客园API开发、上线一个自己的博客小程序
    说明本篇希望用最简单的方式帮助大家上线一个属于自己的实用的小程序,帮助大家体验一个相对较完整的小程序创建、上线流程,步骤会尽可能详尽;文章会更像新手教程,只是引导零基础的同学入个门,所以会尽可能避免让大家自行编辑代码,因此在文中也不会对代码逻辑就进解释,文章中也会附上源......
  • App项目测试内容
    App测试包发布和管理App客户端(内部)发布平台在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些应用内测分发平台。如:蒲公英、Testlink等。操作步骤:开发将应用测试包上传到这些平台上平台可以生成对应的二维码测试直接扫码进行应用安装App客户端(线上)发布平台......
  • MFC-MessageBeep播放系统定义的波形声音
     MessageBeep(MB_ICONEXCLAMATION);//播放系统定义的波形声音/*-1从机器的扬声器中发出蜂鸣声MB_ICONASTERISK播放由SystemAsterisk定义的声音MB_ICONEXCLAMATION播放由SystemExclamation定义的声音MB_ICONHAN......
  • 【高并发项目】面对 QPS 太高我该怎么办?
    ......