面对强大的Visual Studio C++,你能整明白各自的关系吗
来源:互联网 发布:程序员 博客 平台 编辑:程序博客网 时间:2024/06/16 03:56
链接:https://www.zhihu.com/question/20524989/answer/17575697
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 空项目<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">
- 控制台<img data-rawheight="128" data-rawwidth="321" src="https://pic3.zhimg.com/4ae31a735c4250e760d180dea3ed1a1a_b.png" class="content_image" width="321">
- win 32<img data-rawheight="168" data-rawwidth="404" src="https://pic1.zhimg.com/ac255145ea67564ed3a38ba6f7e065bc_b.png" class="content_image" width="404">
- 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,我们这样:写,写,写代码!
后来有了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项目"就是"中国人"了,我给你一个人,要脸还是不要脸?要鼻子还是要嘴巴?这个你自己弄,我这也没模型,哥们儿你自己动手,丰衣又足食啊!
"空项目",空的项目,自然是什么都没有,不仅什么都没有,而且最后能不能弄出一个人来都还是一个问题。
- 面对强大的Visual Studio C++,你能整明白各自的关系吗
- 强大的Visual Studio调试小技巧
- 强大的Visual Studio调试小技巧
- 【转载百度知道】Visual Studio项目的后缀名各自含义
- C#, .NET Framework, Visual Studio 和CLR之间的关系
- .net framework、C#、CLR、Visual Studio的对应关系。
- 让你的MyEclipse像Visual Studio 2008一样拥有强大功能智能感知功能
- 面对勒索软件,你能做的还有这些!
- visual studio 2005 能建立的网站
- 你不得不知道的Visual Studio 2012(1)- 每日必用功能
- Visual Studio各文件夹之间的关系
- 让你的MyEclipse像Visual Studio 2008一样拥有强大功能智能感知功能 (转载)
- Visual Studio快捷键 [VS2008/VS2005] 强大的自动排版
- 使用Visual studio 编程的几种强大辅助工具
- Visual Studio快捷键 [VS2008/VS2005] 强大的自动排版
- 另一个强大的Visualizers :Mole For Visual Studio
- Visual Studio快捷键 [VS2008/VS2005] 强大的自动排版
- 让MyEclipse具有Visual Studio一样强大的代码提示
- SDUT 3470 数学黑洞
- 分治算法——大整数乘法(multiplication of large integers)
- c#里使显示图像和picture一样大小
- 青蛙过河
- |poj 3678|2-SAT|Katu Puzzle
- 面对强大的Visual Studio C++,你能整明白各自的关系吗
- OkHttpUtils使用
- 排序算法----桶排序
- 使用dir数组检查相邻方格
- [构造] SRM 689 div1 MultiplicationTable3
- Python——条件过滤
- A. Display Size
- ==和===区别
- 将java源码打成jar包