现在的位置: 首页 > 综合 > 正文

Api基础知识

2017年12月02日 ⁄ 综合 ⁄ 共 4379字 ⁄ 字号 评论关闭

(引用)API基础知识(引用)

微软公司随Windows操作系统发布的应用程序接口(application programming Interface),即通常所说的API,是Windows系

统为其下运行的各类应用程序提供的重要服务功能。微软的所有Win32平台都支持统一的API调用,包括函数、结构、消息、宏

及接口。通过Windows系统提供的API服务功能,应用程序可以充分挖掘Windows系统的潜力。

API的核心是一组用C语言编写的供外部应用程序调用的函数过程,这些函数封装在Windows系统的一系列DLL动态库文件中。通

过调用动态库文件中的函数,程序员可以在自己开发的应用中方便地向系统请求或执行更低级的设备访问,利用和控制系统资

源,实现与系统相同或相似的功能。由此可以降低应用系统开发的复杂性,提高开发效率,并且无论是应用供应商还是最终用

户都无需支付额外的费用。

当Windows操作系统开始占据主导地位的时候,开发Windows平台下的应用程序成为现实的需要。而在Windows程序设计领域处于

发展的初期,程序员所能使用的编程工具惟有API函数,这些函数是Windows提供给应用程序与操作系统的接口,它们犹如儿童

搭积木一样,可以构建出各种界面丰富、功能灵活的应用程序。所以可以认为它API是构筑整个Windows框架的基石,在它的下

面是Windows操作系统的核心,而在它的上面则是所有华丽的Windows应用程序。

在Visual C++、Visual Basic、PowerBuilder、Delphi这些优秀可视化编程工具的诞生之前,程序员想开发Windows下的应用就

必须借助API。由于API固有的复杂性和程序员缺乏对其深刻的了解,令许多人在其面前望而却步。然而随着软件技术的不断推

陈出新,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户

界面和功能强大的应用程序。

可视化编程工具提供了大量的类库和各种控件,它们替代了API的神秘功能。事实上这些类库和控件都是构架在Win32 API函数

基础之上的,是封装了的API函数的集合。它们把常用的API函数组合在一起成为一个控件或类库,并赋予其方便的使用方法,

极大地加速了Windows应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在企业业务逻辑的实现和应用整

体功能的设计上,而不必过于关注界面设计、设备控制、系统资源访问等技术细节。

实际上,如果要开发出更灵活、更实用、更具效率的应用程序,就必然要涉及到直接使用API函数。虽然类库和控件简化了应用

程序的开发,但它们只提供Windows的一般功能,对于比较复杂和特殊的功能,当使用类库和控件难以实现时,就需要借助于

API来实现。

操作系统提供的API由函数、消息、数据结构、数据类型以及语句组成

静态链接与动态链接的区别:
静态库包含完成一些特定功能的子过程,在程序开发中可以通过链接将它们包含到应用中,它将成为应用不可分割的一部分,

在程序运行时,一次性整体装入。
应用程序调用动态链接库中的某个函数时,应用程序并不复制被调用库函数中的代码,而只是从动态库中复制一些指示信息,

指出被调用函数属于那个动态链接库。因此,在应用程序可执行文件中,存放的不是被调用函数的代码,而是DLL中该函数的内

存地址。这样,当多个应用程序调用DLL库中的同一个函数时,不会在内存中产生该函数的多个复制,而是只有一份复制,从而

可以节省大量的内存资源,提高系统的运行效率。同时,由于应用程序与DLL库文件的相互分离,当DLL库更新后,无需修改和

重新发布原有的应用的可执行文件。

不同类别的API函数分别位于Windows系统不同的动态链接库中, 事实上,Windows系统就是构建在众多的DLL库之上的。
有许多动态库没有开放给用户调用。Windows系统的这种依赖于DLL库的架构,有利于系统的升级与改造。当系统需要扩展新的

功能或更正系统的错误时,只要添加新的动态库或更新原有的动态库文件即可。

 Windows动态库及支持的API服务
动态链接库  描    述
Advapi32.dll  高级API服务。支持大量的接口函数,其中包括许多安全与注册表访问方面的接口函数
Comdlg32.dll  通用对话框 API 库。提供与系统对话框相同的函数支持,包括文件打开保存通用对话框、字体选择、颜色选

               择通用对话框、打印相关对话框等
Comctl32.dll  通用控件API库。提供与Windows系统一致控件支持,包含Windows系统的通用控件集。PB提供的可视控件如列

               表框、文本框、树型控件都属于该控件集
Gdi32.dll  图形设备接口API库。库中涉及设备输出相关函数,包括大多数绘图、显示环境、图元文件、坐标及字体函数

               等
Kernel32.dll  Win 32位核心的API支持。用于内存管理、任务管理、文件管理、资源控制及相关操作
Mapi32.dll  电子邮件接口库。为应用程序提供添加电子邮件功能的一系列接口函数
Mpr.dll          多接口路由器库
Netapi32.dll  32位网络API库。提供了一系列访问和控制网络的接口函数
ODBC32.dll  ODBC数据源访问接口库。提供了用于访问不同数据库数据源的标准的接口函数,用于在应用中实现ODBC数据 

              源访问功能
Shell32.dll  32位Shell API库。应用程序可以使用Shell接口函数来增强系统Shell的各方面的功能
User32.dll  用户接口过程库。包括消息、菜单、光标、插入标记、计时器、通信及其他大多数非显示函数
Version.dll  版本库
Winmm.dll  Windows 多媒体库。提供对系统多媒体功能的访问
Winspool.drv  后台打印接口,包含后台打印API调用
z32.dll          32位压缩过程。提供对文件的压缩和解压缩函数

回调函数
回调函数是程序员在自己的应用程序中定义的,供Windows系统DLL或其他DLL调用的函数,一般用于截获消息、获取系统信息或

处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的

参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。

消息
对诸如PB、Visual Basic和Dephi等大多数可视化程序设计语言来讲,程序设计的核心是对象的事件、属性和方法,但对

Windows系统本身而言,却是以消息处理为其控制机制。
Windows系统的消息以常量的方式给出,常量的值事实上为消息的编号。通过向对象(如窗口)发送消息,通知对象完成指定的

操作。

句柄
句柄是Windows系统用来标识被所有应用程序建立或使用的对象的惟一整数。Windows要使用各种各样的句柄来标识诸如应用程

序实例、窗口、菜单、控件、分配的内存空间、设备场景、文件及GDI绘图对象等。
句柄是一个用32位整数表示的对象标识符,每个句柄都有一个类型标识符,通常以小写字母“h”开头,如hWnd表示窗口句柄,

hBrush表示GDI绘图对象刷子的句柄,hDC表示设备场景的句柄等。

Windows系统常用的一些对象句柄
对    象  标  识  符  描    述
Bitmap(位图)  hBitmap  标识用于存储位图信息的内存区域对象
Brush(刷子)  hBrush  标识用于填充区域的刷子对象
Cursor(光标)  hCursor  标识光标对象
Device Context(设备场景)  hDC  标识设备场景对象
File(文件)  hFile  标识磁盘文件对象
Font(字体)  hFont  标识字体对象
Icon(图标)  hIcon  标识图标位图对象
Instance(实例)  hInstance  标识Windows应用程序实例对象
Memory(内存)  hMem  标识一个内存块对象
Menu(菜单)  hMenu  标识窗口菜单栏或弹出式菜单对象
Metafile(图元文件)  hMetafile  标识图元文件对象
Module(模块)  hModulehLibModule  标识一个代码模块对象,如DLL或Exe模块等,常用于访问一个模块里的资源,如

字体、图标、光标等
Object(Kernel)(对象-内核)  hObject  标识Win32定义的一系列同步对象,如事件、信号机、MUTEX等,每个对象都有相

应的句柄
Pallete(调色板)  hPallete  标识调色板对象
Pen(内存)  hPen  标识画笔对象
Process(进程)  hProcess  标识正在进行的进程对象
Region(区域)  hRgn  标识窗口中的一个区域对象
Window(窗口)  hWnd  标识窗口对象

Windows中的句柄有点像通常的C程序设计中使用的文件句柄,其实就是内部表格的索引值。Windows通过句柄到内部表格中去存

取相关信息,而应用程序则总是通过调用一个 Windows函数来获取一个句柄,其他的Windows函数可使用这个句柄以引用相应的

对象。句柄的实际值对应用程序并不重要,但向应用程序提供句柄的Windows模块知道如何使用该句柄去引用对象,这种处理方

式就不会破坏Windows的多任务环境。

图形设备接口 
图形设备接口(GDI)提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的

输出结果。使用GDI函数可以绘制直线、曲线、闭合图形、路径、文本以及位图图像。所绘制的图形的颜色和风格依赖于所创建

的绘图对象,即画笔、笔刷和字体。用户可以使用画笔来绘制直线和曲线,使用笔刷来填充闭合图形的内部,使用字体来书写

文本。
应用程序通过创建设备场景(DC),可以直接向指定的设备进行输出。设备场景是一个GDI管理的结构。其中包含一些有关设备

的信息,比如它的操作方式及当前的选择。应用程序可使用设备场景函数来创建DC。GDI将返回一个设备场景句柄,在随后的调

用中,该句柄用于表示该设备。例如,应用程序可以使用该句柄来获取有关该设备性能的一些信息,诸如它的类型(显示器、

打印机或其他设备),它的显示界面的尺寸和分辨率等。
应用程序可以直接向一个物理设备进行输出,比如显示器或打印机;也可以向一个“逻辑”设备进行输出,比如内存设备或元

文件(meta file)。逻辑设备向应用程序所提供的保存输出结果的格式,可以很容易地将其发送到物理设备上。一旦应用程序

将输出结果记录到了一个元文件中,那么该元文件就可以被使用任意多次,并且该输出结果可以被发送到任意多个物理设备上 

 

抱歉!评论已关闭.