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

发布时间 2023-07-27 11:49:14作者: Fusio

空项目、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