空项目、Win32项目、MFC项目、Win32控制台的区别
参考链接:https://www.cnblogs.com/MCSFX/p/13267287.html
参考链接:https://www.zhihu.com/question/20524989/answer/17575697
空项目
控制台
控制台没有窗口,控制台与有窗口的(例如:win32、mfc)交互方式不同,前者是CML(命令模式),后者是GUI(用户界面)。
①初始代码,以main为入口
②默认下,只链接c++运行时库和一些核心的win32库
③链接器subsystem,参数为console类型
④编译后,会有控制台,做为标准输入stdin和标准输出stdout
win32
①初始代码,实现一个简单的windows窗口,以WinMain为程序入口
②默认下,引用了win32Api头文件和库
③链接器subsystem,参数为windows
④编译后,会有一个windows
MFC项目
本质上是个win32工程,只是默认帮你引用了mfc框架的头文件和库,并且程序入口由mfc框架提供,不需要自己写。
MFC的界面风格特别好区分,简单来说就是“简陋”风格,跟win32自定义的不一样。
“简陋”风格的原因是MFC都用了同一个UI风格。
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,我们这样:写,写,写代码!
后来有了MFC,我们这样:XXX控件哩!需要哪里点哪里!