不会再用mfc

⌚Time: 2024-10-07 13:36:00

👨‍💻Author: Jack Ge

刚遇到MFC程序。简直是困难,一开始什么都不懂。需要理解整个编程语言的运行机制。需要理解windows操作系统。做mfc和win32api程序的时候。我需要不断的查csdn博客,不断的去微软的mfc文档网站去查找api说明。这是我做别的编程没有过的事情。

mfc的消息处理很烦人,你需要知道不同的消息类型,你需要在begin_message_map和end_message_map之间使用不同的函数建立消息映射,然后再定义消息处理函数。在消息处理函数中,你需要知道wParam、 lParam这些参数,以及参数的高字节和低字节代表的是什么。所有这些,必须参考微软的mfc网页文档。否则你根本记不住。

mfc让我讨厌的就是繁多的字符变量:CString,wchar_t,WCHAR,TCHAR, LPSTR, LPWSTR, LPCTSTR,char,乱七八糟的,互相之间转换也很麻烦,还有ansi和unicode编码。我讨厌这些东西。我也不想知道他们是什么。我希望c++只有一个char和std::string就够了。为什么要整出这么多东西。java的字符串也只有一个string类型。程序运行的一样很好。微软为什么要整出这么多的东西来。

mfc的绘图很繁琐,你需要在正确的窗体函数内绘图,你需要根据不同的情况使用不同的方法获取dc并绘图,然后正确的释放dc,否则就会gdi泄漏。我总结过很多绘图函数和绘图方法。就是为了能够正确的在mfc窗体绘图。

mfc控件的自绘也很有难度,窗体背景的设置,窗体控件的颜色,窗体控件的自绘,你需要自定义一个继承于控件的类,然后覆写他的绘制函数,然后使用自定义类定义控件,与资源的控件ID建立关联。mfc的各种控件也是窗口,你需要用窗口一样对待他们。并且自绘后会遇到某些刷新的问题。区域重叠的问题。很愚蠢。

微软没有给你准备和优化程序的任何自绘,自定义功能,所有这些功能都是基于你对于mfc和win32程序的理解自己实现的。等于在修改程序运行机制,修改操作系统处理程序的方法。才能勉强实现你想要的功能。所以研究vc++的人为什么这么多所谓的高手,不是这些人能多牛逼,是这些人突破了编程语言本身的限制,就成了高手。在qt上想要实现窗体透明可能一个函数调用就行了。在mfc里面,什么都没有给你准备,你得研究窗体原理,程序运行机制,设置各种属性。用各种办法去实现想要的效果。你实现了你就是高手。最后发现还不如qt一句代码调用方便。这种所谓的高手有何意义?

mfc和win32api是与windows系统结合的,等于直接和windows系统直接打交道。你可以直接的控制windows操作系统做一些事情,所以有很多写外挂以及病毒程序的人研究他们。

mfc和win32与其说有难度,不如说他的设计就是垃圾,根本不考虑易用性,没有人性化。与其他编程语言比它太繁琐了,太容易出错了。需要实现的代码太多了。很多东西不可能记住,必须查阅手册。通常写mfc程序必定打开的就是微软的mfc文档网站。这在其他种类的编程上根本没有的事情。所以有些人说自己做了几十年的人还是没有用明白mfc和win32,因为这个东西知识太乱太多了,需要研究和查阅微软的文档说明。

后来我想直接放弃mfc了。这种垃圾谁愿意去研究呢。哪怕我成了一个专家高手。我用别的语言可以很轻松的实现的功能,我费劲研究用他做出来,我又何必呢?

mfc说是对于windows32api的封装库。没见它多好用,顶多加了各种类,各种功能函数。面向对象了,但是机制更加复杂和恶心了。以后最多使用windws32api做轻量的windows下的小程序。而不会接触mfc。