本帖最后由 threebb 于 2021-2-1 10:00 编辑
1、MFC 和 Visual C++ 是什么关系?
2、MFC 和 Qt 有什么区别?
3、MFC 和 STL 有什么区别?
4、MFC 只能做界面开发吗?
答案:
1、Visual C++ 是微软的一款使用 C/C++语言进行开发的工具,是一个软件,是一个编译器。使用VC++新建工程的时候,有好多项目类型可以选择,例如,Win32应用程序,Win32控制台,MFC应用程序等等,所以 VC++ 只是一个开发环境,你可以选择使用MFC,也可以选择不使用MFC写你的软件。MFC是微软提供的一套类库,是一个类的集合,统称MFC。
MFC类库中常用的一部分是对窗口的封装。CWnd,CDialog,CButton等等。我们拿软件上的按钮来说,不使用MFC,直接用 Win32 的 API 函数来创建,我们要用 CreateWindow 函数先创建出来,还要计算按钮的大小,位置等等。但是用MFC,我们想创建一个按钮,直接在工具箱里将按钮拖到界面上,调整位置和大小也就是动动鼠标的事,一句代码不用写就出来了。这也是MFC的优越之处。
那么,我们一般说的 Windows 程序设计和 MFC 程序是什么关系呢?其实,一般我们说的 Windows程序就是不使用MFC类库里的东西,直接用 API 写的程序,显而易见,我们创建一个按钮就需要写函数,计算位置等等这些过程,要是建一个复杂的界面,肯定要写很多代码。MFC的程序当然就是使用了MFC的程序了。
MFC 关于窗口这一块的封装,其实就是封装的 Win32 API。像MFC里CWnd这样的窗口类,最后还是调用的 API 函数 CreateWindow,只是微软为了方便开发人员快速的开发软件,帮我们处理了,借助 VC 和 MFC 给我们一个所见即所得环境。
直接用 Win32 API 编程类似于 C语言的面向过程编程,MFC为了方便我们开发,通过一些封装等手段,使得我们开发的应用程序能以面向对象的方式开发了。
C++重要的地方在于这种面向对象的思想,MFC又何尝不是C++思想的一个实现?我们用C语言编程,显示一个东西用 printf,在C++里可能用 cout 这些函数还不都是 C或者C++ 的库提供给我们的? 在VC下开发,别管用不用MFC,只要包含了 C 或者 C++ 的头文件,链接了库文件,都是可以使用的。
虽然 MFC 提供了这么方便的开发方式,但是在方便的同时,MFC隐藏的细节太多,使我们看不清程序后面的机制了,上面说,MFC是对 Win32 API 的封装,所以要想清楚的知道窗口是怎么出来的,又是怎么响应用户的,还是要从 Windows 编程开始。
|