VB的API编程精粹

2016-01-29 13:22 11 1 收藏

VB的API编程精粹,VB的API编程精粹

【 tulaoshi.com - ASP.NET 】

第一节:API基础 API说到底就是一系列的底层函数,是系统提供给 用户用于进入操作系统核心,进行高级编程的途径。通 过在Visual Basic应用程序中声明外部过程就能够 访问Windows API(以及其它的外部DLLs)。在声明 了过程之后,调用它的方法与调用Visual Basic自 己的过程相同。要声明一个DLL过程,需要在代码窗 口的"声明"部分增加一个Declare语句,如果该过 程返回一个值,应将其声明为Function。例如: Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type 如果过程没有返回值,可将其声明为Sub。 缺省情况下,在标准模块中声明的DLL过程,可 以在应用程序的任何地方调用它。在其他类型的模块 中定义的DLL过程是模块私有的,必须在它们前面 加上Private关键字,以示区分。特别提请注意的 是,在32位的Visual Basic中过程名是区分大小 写的。而在以前的16位版本中并不区分大小写,这 是初学者容易出错的地方。 Declare语句中的Lib子句用来告诉Visual Basic如何找到包含该过程的dll文件。如果引用的过 程属于Windows核心库(User32、Kernel32或 GDI32),则可以不包含文件扩展名。例如: Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount"() As Long。对于其它DLL, Lib子句须指定文件的路径及扩展名。 如果调用的Windows API过程要使用字符串,那 么在声明语句中必须增加一个Alias子句,以指定 正确的字符集。包含字符串的Windows API函数实 际有两种格武ANSI格式Unicode格式。因此,在 Windows头文件中,每个包含字符串的函数都同时有 ANSI版本和Unicode版本。 例如,下面是SetWindowText函数的两种C语言描 述。可以看到,第一个描述将函数定义为SetWindowTextA, 尾部的"A"表明它是一个ANSI函数: SetWindowTextA(HWND hWnd,LPCSTR lpString); 第二个描述将它定义为SetWindowTextW,尾部的 "w"表明它是一个Unicode函数: SetWindowTextW(HWND Hwnd,LPCWSTR lpString); 因为两个函数实际的名称都不是"SetWindow Text",要引用正确的函数就必须增加一个Alias子句: Private Declare Function SetwindowText Lib "user32" Alias "SetWindowTextA"(ByVal hwnd As Longg,ByVal lpString As String) As Long 请注意, Alias子句后面的字符串必须是过程的 真正名称,必须是区分大小写的。事实上,您只需要 记住,只有Windows NT才支持Unicode格式,而 Windows 95只支持ANSI格式就行了。至于两者的区 别,作一般的应用程序开发是不需要了解的。 VB5专业版在VB目录的Winapi子目录下,用几 个文件提供了关于API的信息。 Win32api.txt文件中 包含了32位Windows API函数中用到的函数和类型的 结构声明以及全局常量的值。用户可以用VB本身带的外 接程序"API浏览器"来方便地使用Win32api.Txt,如下 所示: 点击菜单文件项的"加载文本文件…"从VB目 录下的WINAPI目录中选择"WIN32API.TXT",就可以 查看WINDOWS 95系统的API函数的声明、常数定义和 数据类型了。例如,我们打算查看函数InverRect() 的声明。首先,点击"搜索"按钮,输入字符串 "InverRect"。在"可选项"栏中,兰色的亮度条将移 动到"InverRect"项上。再点按"添加"按钮,在"选 定项"中就出现"InverRect"在Visual Basic中的 声明了。接下来自然是点按"复制"按钮,然后将窗 口切换到Visual Basic开发环境中,在需要声明API 函数的地方Ctrl+V(粘贴)即可。 上面所讲的声明方法虽然简单,但只有使用WIN DOWS本身的API函数才能这样。对于第三方提供的动 态链接库(DLL)您只有用键盘老老实实地敲了。 第二节:牛刀小试 现在读者一定很想自己亲自试一下,下面举两个 实际应用的例子让大家体会一下API的妙用吧! 1.使一个窗体始终保持在屏幕的最上面 我们知道VB本身自带的函数是难以完成此功能 的,我们可以通过调用Windows的API函数: SetWindowPos达到我们的要求。操作步骤如下: (1)启动VB5建立一个新工程,在该工程中添加一 个模块(Moudel),在该模块中用上述的"API例览器" 添加如下的该API函数的函数声明和常量声明部分: 'API函数声明 Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long '常量声明 Global Const SWP_HIDEWINDOW = &H80 Global Const SWP_NOACTIVATE = &H10 Global Const SWP_NOCOPYBITS = &H100 Global Const SWP_NOMOVE = &H2 Global Const SWP_NOOWNERZORDER = &H200 Global Const SWP_NOREDRAW = &H8 Global Const SWP_NOREPOSITION = SWP_NOOWNERZORDER Global Const SWP_NOSIZE = &H1 Global Const SWP_NOZORDER = &H4 Global Const SWP_SHOWWINDOW = &H40 Global Const HWND_BOTTOM = 1 Global Const HWND_BROADCAST = &HFFFF& Global Const HWND_DESKTOP = 0 Global Const HWND_NOTOPMOST = -2 Global Const HWND_TOPMOST = -1

来源:https://www.tulaoshi.com/n/20160129/1489950.html

延伸阅读
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...
标签: vb
对于每个需要引用的API函数,我们需要先在程序中说明,如果只在某一窗体内声明并使用它,则把它声明为Private,而如果在模块中声明,且需要在整个工程内使用它,则需要把它声明为Public。 Public Declare Function CallWindowProc& Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc&, ByVal hWnd&, ByVal Msg&, ByVal wParam...
Visual Basic(以下简称VB)是Windows下的一个面向对象的可视 化开发环境,功能非常强大。下面笔者就自己在实际软件开发过程中 获得的一些经验和大家作以交流。 提示钮的实现 如果自己留心一点儿,一定注意到了Microsoft公司的一系列产品 (如Word、Excel甚至B 本身),都为其应用程序的命令按钮提供了信息 。如用户不清楚软件中所列图...
该程序通过VB的多媒体控件MCI32.OCX可以打开MPEG压缩文件(如VCD2.0版的.DAT文件)来实现一个VCD播放器的设计 首先必须确保在你的Windows系统中SYSTEM.INI文件关于[MCI]中需有MPEGVideo项(一般Windows95和Windows98中均有此项)。 次在VB中建立一个新窗口,加入多媒体部件MicrosoftMultimediaControl5.0(位于C:WindowsSystemMCI32.OCX),以...
标签: ASP
       any       有些消息的参数声明为any.这表示该参数是一种可变的类型(你可以以整型,字符串,用户自定义或其他的类型来传递).      这有一个这样的例子:      public declare function sendmessage lib "user32" alias "sendmessagea...

经验教程

685

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部