面对强大的Visual Studio C++,你能整明白各自的关系吗

来源:互联网 发布:程序员 博客 平台 编辑:程序博客网 时间:2024/06/16 03:56
菜鸟学习过程中,为了防止忘记,转载各位前辈的干货,下面是各位前辈的原文及链接
作者:杜小豆
链接:https://www.zhihu.com/question/20524989/answer/17575697
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. 空项目<img data-rawheight="350" data-rawwidth="494" src="https://pic3.zhimg.com/7bc4d387a7e5cf155eda036c67eb4cbe_b.png" class="origin_image zh-lightbox-thumb" width="494" data-original="https://pic3.zhimg.com/7bc4d387a7e5cf155eda036c67eb4cbe_r.png">
  2. 控制台<img data-rawheight="128" data-rawwidth="321" src="https://pic3.zhimg.com/4ae31a735c4250e760d180dea3ed1a1a_b.png" class="content_image" width="321">
  3. win 32<img data-rawheight="168" data-rawwidth="404" src="https://pic1.zhimg.com/ac255145ea67564ed3a38ba6f7e065bc_b.png" class="content_image" width="404">
  4. mfc<img data-rawheight="231" data-rawwidth="468" src="https://pic2.zhimg.com/54ea8ead960806c7564c13842981e75d_b.png" class="origin_image zh-lightbox-thumb" width="468" data-original="https://pic2.zhimg.com/54ea8ead960806c7564c13842981e75d_r.png">


问2个问题即可。

1.控制台 VS win32 mfc?

嗯,有不有脸?

有脸,选win32或mfc。没有脸,选控制台。

脸就是窗口,就是window......s

<img data-rawheight="288" data-rawwidth="548" src="https://pic4.zhimg.com/2dbbb62aee531a6bd3c79004a3a9b117_b.png" class="origin_image zh-lightbox-thumb" width="548" data-original="https://pic4.zhimg.com/2dbbb62aee531a6bd3c79004a3a9b117_r.png">(这个有脸)(这个有脸)


<img data-rawheight="347" data-rawwidth="662" src="https://pic3.zhimg.com/681ba6a071cbef4c07a28dca1cd78592_b.png" class="origin_image zh-lightbox-thumb" width="662" data-original="https://pic3.zhimg.com/681ba6a071cbef4c07a28dca1cd78592_r.png">(这个没脸)(这个没脸)


控制台与win32 mfc:交互方式的不同,前者是CML(命令模式),后者是GUI(用户界面)。



2.MFC VS win32

嗯,是不是“国”字脸?

是“国”字脸,选mfc。是DIY的脸,选win32。

<img data-rawheight="231" data-rawwidth="468" src="https://pic2.zhimg.com/54ea8ead960806c7564c13842981e75d_b.png" class="origin_image zh-lightbox-thumb" width="468" data-original="https://pic2.zhimg.com/54ea8ead960806c7564c13842981e75d_r.png">

(国字脸1)

<img data-rawheight="522" data-rawwidth="671" src="https://pic1.zhimg.com/10a5affe69ebf4262405c08613330824_b.png" class="origin_image zh-lightbox-thumb" width="671" data-original="https://pic1.zhimg.com/10a5affe69ebf4262405c08613330824_r.png">(国字脸2)(国字脸2)


<img data-rawheight="168" data-rawwidth="404" src="https://pic1.zhimg.com/ac255145ea67564ed3a38ba6f7e065bc_b.png" class="content_image" width="404">(DIY脸1)(DIY脸1)

<img data-rawheight="484" data-rawwidth="552" src="https://pic4.zhimg.com/a96eeb95b1c9e5cfa9b530777cb5bc8b_b.png" class="origin_image zh-lightbox-thumb" width="552" data-original="https://pic4.zhimg.com/a96eeb95b1c9e5cfa9b530777cb5bc8b_r.png">(DIY脸2)(DIY脸2)



为什么MFC的软件都一个模样?

<img data-rawheight="283" data-rawwidth="80" src="https://pic3.zhimg.com/b324ae2beee64d2893087721b93de04e_b.png" class="content_image" width="80">

(因为它们用的同一套整容工具)



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


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


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


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


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


创建一个窗口:

以前用win32,我们这样:写,写,写代码!

<img data-rawheight="207" data-rawwidth="1167" src="https://pic2.zhimg.com/6a75016caeb0020765426ef77d9d85c5_b.png" class="origin_image zh-lightbox-thumb" width="1167" data-original="https://pic2.zhimg.com/6a75016caeb0020765426ef77d9d85c5_r.png">

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

<img data-rawheight="375" data-rawwidth="539" src="https://pic3.zhimg.com/36aa882ae14aa0d9766950eae17165de_b.png" class="origin_image zh-lightbox-thumb" width="539" data-original="https://pic3.zhimg.com/36aa882ae14aa0d9766950eae17165de_r.png">

万众瞩目的空项目

/*空项目就是什么也没有啦!*/

————————————————————————————————————


( 中国无鼻子无脸人、中国有鼻子有脸人、重庆整形人、中国人有什么关系?)
带有"中国"字样的,是一类人,都属于"中国人"。重庆是中国的一个市,"重庆整形人"也属于"中国人"。
所以,"Win32控制台应用程序"、"空项目(准确的说应该是win32空项目)"、"MFC应用程序"都属于"win32项目"。带有"win32"字样的都属于一类,只不过"MFC"是其中的一个异类。
“win32控制台应用程序”就是那个"中国无鼻子无脸人",长得不帅,黑漆漆的一张脸,做起事来有效率,但是如果派他去做坏事,比如入侵女生宿舍什么的,会被发现。他的脸不会改变,总是黑漆漆的。那啥,没鼻子的脸,也是一张脸。
"MFC应用程序"是"重庆整形人",没有"中国人"就没有"重庆整形人",所以"MFC"是基于"win32"的。不管怎样,他都是好面子的人,所以他总是会有一张脸。而且这个脸可以自己弄,而且很方便。要鼻子?不用你自己弄,我这有个模型,你说说尺寸大小就行了。还有嘴巴?行!
"win32项目"就是"中国人"了,我给你一个人,要脸还是不要脸?要鼻子还是要嘴巴?这个你自己弄,我这也没模型,哥们儿你自己动手,丰衣又足食啊!
"空项目",空的项目,自然是什么都没有,不仅什么都没有,而且最后能不能弄出一个人来都还是一个问题。
0 0
原创粉丝点击