别学MFC了,要学就学这些...

今天看到几大公众号联合送书,有算法、python、容器、Spring等相关的书籍,其中有一本 << VC++深入详解>> 显得有点与众不同,引起了我的注意,触发了点滴回忆……

遥想多年以前,这本书也是我的入门书籍之一,有了电脑后,装了开发环境尝试编译书中的例子,从此开始了 MFC 的入坑之路。时至今日,在工作中还在用,或许未来的一段时间里还要继续使用。

虽然我还在使用,但是对于之前没接触过 MFC 打算学习的人来说,建议还是不要学了。不过在今天这个时代,打算学习的人想来不会太多,毕竟现在是云、大数据、万物互联的时代,大多数人都在学 Java、Python、Docker 及其相关的技术。虽然我内心强大,但想到此处还是不由得有些落寞……

学什么

如果不学 MFC,那打算开发桌面客户端使用什么技术呢?

如果使用的语言是 C++,建议使用 Qt;如果使用的语言是 C#,建议使用 WinForm。下面从不同的方面做些简单的比较:

  1. 开发环境:Qt Creator 是 Qt 的官方开发环境,但是在我短暂的使用过程中还是觉得的 VS 比较好用,通过官方提供的 VS 插件,搭配熟悉的 VS 就是最优的 Qt 开发环境。界面设计方面,Qt 的设计器和 WinForm 的设计器都比较好用。
  2. 基础类库:有了丰富的基础类库,才能提高开发效率。在这一点上 Qt 和 .NET(WinForm 只是其中的关于界面的部分)都含有各种各样的类库来满足不同的开发需求。
  3. 资料丰富:Qt 和 WinForm 都有非常丰富的资料,无论是官方提供的技术文档,还是已经出版的技术书籍。
  4. 跨平台:Qt 是基于 C++ 的跨平台的库,而 WinForm 只能在 Windows 平台使用。(当然在其它平台可以使用 .NET 的开源实现版本 Mono,Mono 是由 Xamarin公司开发的跨平台 .NET 运行环境,已被微软收购,而官方的 .NET 也已开源。)

是 Qt 还是 WinForm,更多的可能还是要根据工作的不同需求来定。如果还没参加工作,可以都了解下,然后根据个人喜好进行选择。这些都是界面相关的部分,在学习这些的同时,还要学习软件开发相关的其它通用的知识,而这些才是需要更加关注的地方。

MFC 的 3 个问题

回到 MFC,为什么不建议学习它?简单说下我的 3 个理由:

  1. MFC 是微软创建的类库,而现在微软已经将其放弃。多年不再更新,且新版本的 VS 默认不再安装(我安装的版本中 VS2015 已经默认不再安装)。
  2. 基础类库:前面提到过有了丰富的基础类库,才能提高开发效率。而MFC 只是对 Win32 的封装,类库不丰富。
  3. 界面资源:使用 MFC 开发界面时,产生的界面资源都存储在 .rc 文件中,控件 ID 都存储在 resource.h 中。多人开发进行合并时容易产生 ID 冲突等问题。而且由于资源都是存储在一个文件中,已开发的界面难以复用。

其它

除了 MFC、Qt、WinForm,还有其它一些桌面客户端开发技术:

  • Electron:该技术是近几年比较流行的桌面客户端开发技术,值得关注。官方介绍是“使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用”。我目前使用的基于该技术的应用有 VS Code、Typora、Yu Writer等。
  • CEF:学习资料比较少、难度比较大。网易的一系列软件如网易云音乐、有道词典、云笔记都基于此开发。
  • wxWidget:基于 C++;跨平台;类库丰富;比较小众。
  • WPF:属于.NET 的一部分,相对于 WinForm 学习难度大一些;
  • WTL:基于 C++;资料少;只与界面相关。
  • ……

- - - End - - -


欢迎扫码订阅我的微信公众号,阅读其它相关文章。

本文作者: Lzl678
本文链接: https://www.cnblogs.com/Lzl678/p/11032326.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

原文地址:https://www.cnblogs.com/Lzl678/p/11032326.html

时间: 2024-08-02 03:44:02

别学MFC了,要学就学这些...的相关文章

学MFC之前必须会的金典创建窗口程序的过程代码

#include <windows.h> // 窗口过程函数 LRESULT CALLBACK MyWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage (0); return 0; case WM_PAINT: PAINTSTRUCT ps; HDC hDC = BeginPaint (hwnd, &ps); Ell

NPL ( neuro-linguistic programmers 神经语言程序员) / ( Neuro-Linguistic Programming 神经语言程序学/身心语言程式学/ 神经语言程式学/ 神经语言程式)

Neuro-Linguistic Programmers 神经语言程序员 Neuro-Linguistic Programming  神经语言程序学/身心语言程式学/ 神经语言程式学/ 神经语言程式 NLP是神经语言程序学 (Neuro-Linguistic Programming) 的英文缩写.在香港,也有意译为身心语法程式学的.N (Neuro) 指的是神经系统,包括大脑和思维过程.L (Linguistic) 是指语言,更准确点说,是指从感觉信号的输入到构成意思的过程.P (Program

所谓“穷人学管理,富人学技术”的荒谬理论

管理计算机如同管理人一样的 人存在的意义是为了做事,但是一个人所能做的事是有限的,所以就有了更多的人一起去做共同的事,但是因为人是不稳定的,若不加以限制,就会出错,所以管理者由此诞生:而管理者,首先本身要会做事,才有资格成为管理者,安排其他人去代替自己做事,成为管理者后,所要做的是与其他人沟通,以这种方式达到让别人代替自己做事的目的:而计算机存在的意义也一样是做事,同时,它能够比人处理更多的事情,只要有更强大的性能,这些性能又可以通过更换硬件来实现,所以可以理解为局限性比人更小:那么我们把计算机

SDUT 2463 学密码学一定得学程序

学密码学一定得学程序 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 曾经,ZYJ同学非常喜欢密码学.有一天,他发现了一个很长很长的字符串S1.他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2.但是很不幸的是,WL忘记跟他说是什么意思了.这个时候,ZYJ不得不求助与伟大的ZP.ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现.ZYJ恍然大悟,原来如

想学嵌入式开发怎么学?看这份超详细的嵌入式学习路线

嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 嵌入式学习的几种线路图 1.嵌入式linux上层应用,包括QT的GUI开发 2.嵌入式linux系统开发 3.嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE.VxWorks等等 Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式. 你可以尝试以下路线: (1) C语言是所有编程语言中的强者,单片机.DSP.

大牛分享C++学习建议,从入门到精通速学的干货,学到就是赚发了

C++学习建议 大牛分享C++学习建议,从入门到精通速学的干货,学到就是赚发了C++缺点之一,是相对许多语言复杂,而且难学难精.许多人说学习C语言只需一本K&R<C程序设计语言>即可,但C++书籍却是多不胜数.我是从C进入C++,皆是靠阅读自学.在此分享一点学习心得.个人认为,学习C++可分为4个层次:创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C+

偷Microsoft师学MFC艺:且看C++如何支持反射

如果你问一个IT人士"C++如何实现类似Java的反射?",结果会怎样呢?~!@#¥%--&*,估计大部分人都会要稍微思考了一下,或者直接说"C++根本就不支持反射的呀!". 是的,C++语言本身是不支持反射的,但实际应用中总是会有将对象序列化的需求,总不可能C++不支持,我们就不用C++了,既然发明C++的大师们没有考虑这个,那我们只有自己动手了,毛主席说过"自己动手,丰衣足食"! 天生限制 C++语言本身不支持反射机制,但C++对象总

学HTML5必须要学JS吗

学习html5的话,如果你是想作为一个前端人员的话,js是必须要学的,这里我给你一些建议: 1.学习目录:html >> css >> js >> html5 >> css3(书籍的话,我建议你<Head First HTML and CSS>这本书还是蛮不错的, 2.进阶:学js的时候建议视频和书配套,视频主入门,书主细节.深入: 3.学习方法:至于html和css可以看看视频学习,初期学习不一定要求那么高,要精通,有大概的映像就行,在后面学习

重大学习转折记录(学java后开始学php)

进入工作室后专心学习了很长时间jsp,项目水平已经能独立承担学校内的各种项目,对java的理解程度.项目能力都渐入佳境. 这个时候邂逅了php,做了几个项目后被它的简单魅力吸引,原来web开发还可以如此轻便. 我爱java,也爱php,语言相通,项目逻辑相通,每一门语言都是很好的语言, 本科生不该对语言有所偏见,我们应该要学的是算法.数据结构.操作系统.计算机网络等基础知识以及后台迷人的业务逻辑. <?php echo "java超爱的"."php超赞的";