1、API函数

      API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows32位平台的应用程序编程接口,在window操作系统盛行的期间,程序员主要是利用API函数来开发Windows平台下的应用程序当时程序员必须熟记很多API函数。随着软件技术的不断发展,在Windows平台上出现了很所可视化编程环境(例如:VB,C,c++等)在这些编程环境中出现很多类和控件,他们代替了API的功能,实际上这些类和控件是封装了API函数集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。 这也是API函数使用的场合,所以我们对待API函数不必刻意研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。API不用去刻意学,只要用到的时候查看API帮助即可。


2、API函数在VB中的查看

      开始→所有程序→Microsoft Visual Basic 6.0 中文版→API文本浏览器

                                        

出现API文本浏览器对话框,然后点击文件→加载文本文件→WIN32API→选择你所需要的内容



3、API函数解析

<strong><span style="font-size:18px;"></span></strong><pre name="code" class="cpp"><strong><span style="font-size:18px;">Public Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long</span></strong>


Declare 语句:用于在模块级别中声明对动态链接库 (DLL) 中外部过程的引用。对此,你只要记住任何API函数声明都必须写这个语句就可以了。


Iib: 指明包含所声明过程或函数的动态链接库或代码资源。也就是说,它说明的是,函数或过程从何而来的问题。

如在上例中,SetParent Lib "user32"说明 函数 SetParent 来自 user32.dll文件。主要的dll动态连接库文件有∶

(1)user32.dll Windows管理。生成和管理应用程序的用户接口。

(2)GDI32.dll 图形设备接口。产生Windows设备的图形输出
(3)Kernel32.dll 系统服务。访问操作系统的计算机资源。


注意,当DLL文件不在Windows或System文件夹中的时候,必须在函数中说明其出处(路径)。如,SetFocus Lib "c:\Mydll\user32"函数声明中的Alias 是可选的。表示将被调用的过程在动态链接库 (DLL) 中还有另外的名称(别名)。如,Alias "SetFocus" ,说明SetFocus函数在User32.dll中的另外一个名称是,SetFocus。怎么两个名都一样呢?当然,也可以是不同的。在很多情况下,Alias说明的函数名,即别名最后一个字符经常是字符A,如SetWindowsText函数的另一个名称是SetWindowsTextA,表示为Alias "SetWindowsTextA"。这个A只不过是设计家们的习惯的命名约定,表示函数属于ANSI版本。

别名的用途:从理论上讲,别名提供了用另一个名字调用API的函数方法。如果你指明了别名,那么 尽管我们按Declare语句后面的函数来调用该函数,但在函数的实际调用上是以别名作为首要选择的。如,以下两个函数(Function,ABCD)声明都是有效的,他们调用的是同一个 SetFocus函数∶

Declare Function SetFocus Lib "user32" "SetFocus" (ByVal hwnd As Long) As Long
Declare ABCD SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

需要注意的是,选用Alias的时候,应注意别名的大小写;如果不选用Alias 时的时候,函数名必须注意大小写,而且不能改动。当然,在很多情况下,由于函数声明是直接从API文本游览器中拷贝过来的,所以这种错误的发生机会是很少的,但您有必要知道这一点。

byval的作用:这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。


最后提醒一句,API声明(包括结构、常数)必须放在窗体或模块的"通用(General Declarations)段。

VB中API函数的调用相关推荐

  1. VS2010中VB.NET中API函数的调用

    API有两种调用方式: 第一种使用declare的API调用, Declare Function publicname Lib "libname" [Alias "ali ...

  2. C#中对 API函数的调用

    C#中对 API函数的调用  1                                              C#中对 API函数的调用  2  3  4    using System ...

  3. vb中SendMessage函数

    Windows API(应用程序接口)是Windows系列软件为程序开发人员提供的火力强大的"武器库",在这个武器库中,有很多极具威力的武器,SendMessage就是其中之一,它 ...

  4. Vb.net/VB 声明API函数实现父窗口功能

    回想第一次敲机房收费.自己调用了api函数实现了父窗口及其子窗口最小化的功能.现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 事实上细致看两者并没有多大的差别. ...

  5. VB中DateDiff 函数解释

    VB中DateDiff 函数使用方法 DateDiff (interval, Date1 , Date2[,firstweekofyear[,firstweekofyear]])  返回一个Varia ...

  6. VB中CopyMemory函数

    vb中copymemory函数的使用挺耐人寻味的.copymemory的使用说明资料书上就一句"该函数用于将一块内存的数据从一个位置复制到另一个位置".其参数数据类型destina ...

  7. 【Python——类】 同一个类中一个函数里调用另一个函数的方法

    [Python-类] 同一个类中一个函数里调用另一个函数的方法 class Solution:def a(self):self.b() # 注意这种写法:self.类名def b(self):prin ...

  8. php instr(),vb中instr函数怎么用

    vb中instr函数怎么用 instr函数的作用是从起始位置开始向后找到被搜索的字符串第一次出现的位置,如果找的到就返回其在原字符串中的位置,否则就返回0. 语法:instr( string1, st ...

  9. python如何调用dll库中的函数_Python调用dll库接口-ctypes方法

    背景 最近需要用python写个脚本程序(win10 环境),需要调用现成的dll库完成这项任务,对于一直在Linux平台上开发程序的本人来说,从没有过使用dll的经历(不得不说还是so大法好),遇到 ...

最新文章

  1. 自己动手写一个能操作redis的客户端
  2. VTK:绘制截锥体用法实战
  3. css为什么要清除浮动
  4. .NET Core开源行动:一键创建Excel Add-in
  5. php代码时间控制,PHP 网页过期时间的控制代码
  6. Unreal4(虚幻4抽茧剥丝)——02章格式化C++和蓝图
  7. edHat linux光盘引导,[原]个性化Linux发行版光盘之补充——XZ(LZMA算法)
  8. python中max()、min()获得最大值与最小值_(Python基础教程之十)Python max()和min()–在列表或数组中查找最大值和最小值...
  9. webx学习(一)——初识webx
  10. django-模态框编辑学生
  11. 前端基础:vue.js跟node.js分别是什么
  12. python画相关系数矩阵图_pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))...
  13. 《Adobe Illustrator CC经典教程》—第0课0.2节使用Adobe Creative Cloud进行同步设置
  14. dnf助手服务器内部出错,地下城与勇士TGP的DNF助手异常解决办法 TGP-DNF助手补丁不适配怎么办...
  15. VLAN-TAG 知识相关
  16. word和PDF手写电子签名
  17. phpmyadmin mysql 5.1_phpMyAdmin(MySQL数据库管理)下载_phpMyAdmin(MySQL数据库管理) 版本:v5.1.0_魅蓝下载...
  18. 计算方法-常微分方程初值问题的数值解法
  19. Android Go项目 来电铃声与UI不同步问题
  20. Confirming the Buzz about Hornets——2021美赛C题思路及题解

热门文章

  1. Python计算代码的执行时间
  2. Matlab凸轮设计
  3. XCP实战系列介绍04-CANape工程配置超详细介绍
  4. 谜题51:那个点是什么?
  5. springboot参数转换Json格式化问题
  6. 毕业设计 Spring Boot个人健康信息管理系统(含源码+论文)
  7. pgi linux安装教程,Ubuntu 10.10下安装PGI Fortran 10.2
  8. 11.0592 M晶振
  9. Potplayer制作视频缩略图的方法
  10. Gradle编译问题(appcompat和material相关)