理理windows API、SDK与MFC之间的的关系

 

从我看的些书中我得到了这些信息

微软公司为了方便java、c/c++、c#等编程语言编写Windows程序为他们都开发了API。为了方便使用又对这些API进行了封装

对c/c++语言来说,这些API全部用C语言编写。又有两种封装方式
非面向对象的封装SDK(software development kit )
面向对象的封装方式MFC(Microsoft Foundation Classes)

问题 1

SDK是直接使用API函数的,可以在C语言中使用
既然是直接使用API函数,那么又为什么开发SDK呢。SDK与windows API有什么区别呢?

个人认为MFC将某些能够用来完成一个大功能的多API函数,封装在一个MFC类中
这样我们就可以调用MFC的某一个类来完成一些大功能,而不管具体的每一个细节功能的完成
比如 A是MFC一个类,定义这个类的头文件必须包含定义API函数的头文件
class A
{
  private:
      //私有数据,方法
  protected:
      //保护数据,方法
  public:
      A();
      ~A();//构造函数,析构函数等为了一个类的安全实用而必须的函数
      B()
      {
         C();
         D();
         E();
         F();
      }  //B是A类的某个方法,这个功能通过调用多个API来完成这项功能      
}


当然MFC也有自己的扩展。也有些API函数没能包含在MFC中,这时就需要直接调用API函数了

问题 2

书上也说MFC可以在C语言中使用。这是怎么回事呢?C语言没有类这种自定义的类型。


问题 3

个人认为要学windows编程,当然从windows API 学起。然后MFC,和SDK也要学,稍微看看,再练练就会了。你们对学windows编程又有什么看法呢?

问题 4

学windows编程有什么好教材吗?推荐几本。
今天在图书管找了一个上午,都没发现一本好书。这些书都一个模式,头几章,粗浅的介绍些c++的几本语法。后边的章节,依次是
创建一个窗口,设计自己的对话框,通用控件,资源使用,图形与文本模式。
并且这些书都只有C++ primer plus 的三分之一厚。内容当然是笼统之至啊。

问题 5
SDK,MFC叫做应用程序编程框架,这该怎么解释呢?

问题 6 

.NET是一种针对网络应用的(或者在网络应用中比VISUAL studio好)集成开发环境吗?希望搞手给详细解释.NET。为什么说微软公司希望程序员转向使用.net来开发应用程序?是由于.NET的优点,还是商业利益?
MS的东西就是那样,很多,很杂,你又不好说哪个到底怎么样,下面我的观点不一定正确,仅仅是个人偏见,很多观点不准确甚至错误。

Windows API,应用程序接口,为了编写应用程序提供的函数头,做应用程序需要调用这些API,这些API十分丰富,你可以用来做任何事情。编写任何Windows应用程序都离不开他们,缺点是繁琐,汇编能做任何东西,干嘛还用高级语言?一个道理。

SDK是免费的,可以到MS官方网站上去下载,假如你调试程序恐怕只能用命令行。至于SDK怎么封装API是技术问题,这里不讨论,是MS的事情,MS开发SDK的目的可能是针对穷用户和不必要需要IDE的用户。

MFC封装API简化了编写应用程序,由于历史和设计上的原因(当时C++还没有标准),MFC封装的面向对象勉勉强强,而且有些臃肿,不论怎样,开发轻量级应用,MFC都显得过分臃肿了些。当然了,做窗口程序设计除了MFC也可以用其他编译器带的库,这有很多,例如Borland开发的库,大名鼎鼎的QT等等

.net是一个框架(MFC也是早期开发的一个公用框架,不过跟.net层次不同),很多应用程序需要运行在这个框架上,可不仅仅是网络应用,至于MS这样做出于商业目的还是技术原因这里不必要讨论,对程序开发来说,很多人熟悉的VS运行在.net上,对于VS来说,SDK可能是背后真正的东西,VS多了一个易用的界面,我这么认为。

其实MS所有的东西都是用C++做的,从Win98开始,各种版本的Windows操作系统(除了Vista我不清楚用什么语言)到所有MS的应用(Office, SQL, .net, VS等等很多很多啦,你能想像出来的都是),其他所有语言包括C#, VB等等都是靠C++背后支持着,不论C#吹的多热,MS自己心里很清楚,VS中用C#做仅仅做了很少一部分基类,其他全是C++做的(包括C#编译器),在网络应用程序开发来说,C#目前远不及VB,C#在这方面的支持类库几乎是空白,调用只能调VB的。

至于Windows编程,<<Windows程序设计>>早已经绝版,你可以看看<<Windows核心编程>>,Win32多线程程序设计,假如你想用MFC,可以看看<<MFC程序设计>>。

 

作者:JackieRasy      发表时间:2008-11-13 22:18:00

 3楼  


    说点点我最近才学到的东西:

    API这个词是指应用程序设计接口,其实质是在程序内的调用一套函数,我们可以用它创建其他程序.在调用的过程中不必知道其内部的实现,只要知道其出现原型及返回值就可以了.Windows API是当今最著名的API,它通过DLL实现,任何支持Windows API的语言都可以编写Windows应用程序.Windows API本身就是Windows的编程基础,其本身包括了Windows的基本概念.但由于Windows本身结构的复杂性,许多API函数的内在机理也很复杂,API函数间的关系也很复杂,有人比喻API相当于Windows应用程序编写的汇编语言.当前许多编程语言不仅支持Windows API,还将API封装起来,例如 MFCDelphi,C++Build还有VC++等都通过自己的函数类库来实现Windows API的功能,其实质还是最终转化为API.

  在Windows核心中有三个动态链接库构成了Win32 API的主体:

   USER32.DLL:负责窗口管理,包括消息,菜单,光标,通信,计时器和其他控制显示窗口的函数.

   GDI32.DLL:图形设备接口,他管理用户界面的生成和图形绘制,主要包括设备描述表,字体,位图等.

   KERNEL32.DLL:Windows的核心,他管理内存调度,进程调度等低层功能.

    早期还有Windows SDK.SDK是软件开发工具包,Windows SDK包含以下内容:描述Windows函数,消息,结构,宏及资源的大量文档、各种工具,包括对话编辑器,资源编辑器、一套Windows库及头文件、用C语言编写的Windows程序样本.


    我觉得一定要掌握windows技术特点、理解了Windows的运行机制,事件驱动模型和Windows消息循环的概念,我是个比较强调概念的人,呵呵~这样学习windows编程乃至.NET都是很好的支持~!

 

作者:JackieRasy      发表时间:2008-11-13 22:22:00

 4楼  

不过我现在还是想一心一意学习好c++,但你对一门语言能几近庖丁解牛的时候,任何转型都会快速而高效,而没有人能驾驶着一架连螺丝钉都没扭紧的飞机驰骋天空~呵呵!~

 

作者:scaredkinght      发表时间:2008-11-13 23:23:00

 5楼  

Linux编程多好,搞什么windows.....

 

作者:tr0217      发表时间:2008-11-14 13:03:00

 6楼  

引用
Linux编程多好,搞什么windows.....


个人觉得自由开源的软件才有搞头,开源自由的操作系统没啥生命力
符合GUN_GPL协议的自由软件倒是不少
linux是按GUN_GPL协议发布的,但是目前没有一种linux是符合这个协议的。操作系统的开发是非常有难度的,自由开源的软件不符合商业利益。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值