我是一支君子兰,离开生我养我的土壤,就会慢慢枯萎!

MFC、Windows API 、VC之间的关系

上一篇 / 下一篇  2008-05-22 17:07:49

VC是一个编程工具软件,它集成了C++编译器和编辑环境,全称叫做:Virtual C++,即“可视化的C++编程工具”。

MFC是一个微软提供的基础类库,它封装了WINDOWS里的API,对于开发者来说,用MFC会比直接用Windows的API来得容易一些。(所有Windows应用程序都得通过使用Windows API来实现)MFC中还提供了很好的应用程序框架,最突出的就是"文档-视"结构。

C++语言与操作系统环境是没有关系的,由于Windows操作系统太过普及,所以一般大家都在开发基于Windows操作系统的应用程序。

目前用于开发Windows应用程序的编程语言、编程环境很多,而用C++开发程序的编程环境中,VC是比较好用的,尤其是开发Windows应用程序,再加上VC对MFC应用开发支持的最好(都是微软的产品),所以,现在相当多数的人在VC上用MFC来开发Windows应用程序。

你提到的“windows编程和windows API编程”还是有一点不同,前者比较泛指开发Windows应用程序,而后者比较强调直接调用Windows API进行编程,前者包括后者,现在直接用Windows API编程的比较少,而是用封装了API的类库来开发的比较多,比如MFC。

总之,VC,C++,MFC之间是没有什么直接关系,要说有的话,就是:
1。VC支持C++编程语言,也支持用MFC开发Windows应用程序
2。MFC本身就是C++类库

另外:
1。VC也可以开发C程序,可以完全不用到MFC
2。VC可以用C或者C++开发非Windows程序,比如Dos程序等

如果你想用C++编Windows程序的话,建议你先把C++学好,然后试着在VC环境中学习用MFC框架开发Windows程序,可以参考《Virtual C++技术内幕》(现在已经搞不清到多少版了),当然,你手上还得必备一本MFC参考手册,随时可以查找类以及类成员函数的说明(有MSDN也可以)。

刚开始学不要太紧张,也不要太急于求成,循序渐进,最好先把一些概念搞清楚,还有就是操作系统的消息机制一定要多下功夫去理解,有了这些基础,再实践起来就会容易和轻松的多。

好了,先写这些,希望能够对你有所帮助。

***********************************************************

补充回答:

如果你现在想学windows API 编程的话,用VC也是合适的,创建工程的时候选择Win32 App,并且不使用MFC。

Windows API编程肯定需要使用一种编程语言的,选择C或者C++都是不错的选择,只要在程序里不使用MFC,而是直接调用Windows 提供的最基本的API,都可以叫做Window API编程的。

至于选择开发环境,VC还是相当不错的(虽然稍微复杂一点),可以利用VC为你生成应用程序框架,可以大大提高开发效率,也可以自己从WinMain()开始一点一点地写(即应用程序的唯一入口点,相对而言,非Windows程序是以main()开始的),就跟写DOS程序一样。

总之,Windows API编程并不复杂,你可以看看几个简单的例子,然后慢慢的增加代码和应用的复杂度。如果你用VC,就让VC帮你生成一个最简单的应用程序框架,你一句代码也不用写,就可以运行了,然后你再仔细看看VC帮你生成的源代码,你就可以开始在这个基础上慢慢的加些新的代码进去了。

编程的时候,在VC缺省的情况下是默认为C++的,至于你用C还是C++就随你了,一般人都是混着用的,C++完全包含了C,现在一般区分C和C++,无非就是简单的看看是否使用了类,是否使用了引用(&)等等。。。建议你就直接用C++,先掌握基本的C语法和概念。


TAG:

君子兰 引用 删除 songwj0806   /   2008-05-22 17:09:35
MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Dephi的关系一个道理,Pascal是Dephi的语言基础,Dephi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面对对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的..
MFC是Win API与C++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多内节程序开发人员在Win下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的..
最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinOS(用MFC编写的程序绝大部分都在WinOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版..
 

评分:0

我来说两句

Open Toolbar