MFC是Win API与C++的结合,API,即微软提供的WinDOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对WinDOS下应用程序的开发,使这些被开发出来的应用程序能在WinDOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinDOS作为一个 *** 作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C++ &MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的..
最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版。
MFC是微软封装了的API。什么意思呢?windows作为一个提供功能强大的应用程序接口编程的 *** 作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为,API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码槐耐厅。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架,
MFC是亩虚对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成为高手,做个笔记本把自己认为重要的类、函数记下来,随时学习,也是很好的突击方法。
MFC迁过去毕竟还是C++,差别有,但没有特别大。我们老大经常说的一句话是,源码本身就是最好的注释,源码都给你了,有什么看不懂的。
MFC比较烦的一点是如果不是高手手底下出的活,氏岩很容易把业务逻辑和界面搀和在一起,几乎所有的业务都被分散到各个对话框底下,低内聚高耦合,迁移起来蛋疼菊花紧。
但即使是这样,耐下心来看,也铅让是很容易看出端倪的。
扯一些理论,再说一些小技巧吧。
首先,你必须熟悉程序本身,就是会用,搞明白每个按钮按下去会发生什么事,每个业务逻辑的触发点在哪。
搞清楚了功能,去linux下仿造界面,按钮什么的照原样摆出来。
再然后每个按钮按下去的时候发生了什么事,去MFC源码里边找,槐核局遇到一个业务类,就整个拷过去稍微改一下能通过编译就差不多了,遇到界面处理就转换成linux的处理。
整个过程有点像原型模式,只是更简单,因为不用你再去考虑每个按钮的响应了,原型都已经设计好了。
再强调一下,耐心,有志者事竟成,只要肯做,就能做到。
你首先有理解什么是虚函数,虚函数存在的意义是什么,C++中虚函数的调用是怎样实现的,这样你才能真正明白,MFC中这些函数的调用关系。简单的说,虚函数是为了扩展和多态而产生的。从目的来看虚函数是一个接口,允许你在原有代码的扮中基础厅扮山上加入自己的代码,而无需改变以前的代码,从而达到扩展的目的。
(不知你能否看明白)
例如:我要画一个人,需要以下三个步骤
A: 画头
B: 画身体
C: 画脚
这三步骤封装在一个程序文件里面。
但是你对这个文件画的头不满意,要加入更多的细节,怎么办呢,你又不能改变原来的代码。这个时候,就是虚函数的用武之时了。原文件只需将画头的代码改为虚函数,新代码继承原代码,你只需改写你的 画头的 虚函数就完成的新代码,而不用对原有代码有丝毫改变。
所以 OnDraw 是在系统画MFC界面时,调用的, 如果缺大你对系统本身画的界面的某部分不满意,或者想加入自己的内容,就可以改写这个函数。明白了吗!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)