Windows 编程/C 和 Win32 API
Windows 中的许多底层函数都是使用 C 编程语言创建的。与 VB 代码甚至 C++ 代码相比,C 代码通常更小更快,并且与原始汇编代码相比,开发时间更短。Win32 API 中的所有 DLL 以及大多数内核级结构都是用 C 代码实现的。
Visual Basic 本质上是一种“仅限 Windows”的编程语言——尽管一些移植版本存在或正在开发中用于其他系统,但 VB 在其他操作系统上的普及程度远不如 Windows。VB 运行时库利用 Win32 API 和 MFC 库来实现其功能。新版本的 VB,“VB.NET”,使用 .NET 平台,因此不会在本维基教科书中介绍。旧版本的 VB 或“VB Classic”利用与 C 和 C++ 相同的 Win32 API 和 MFC 接口来与 Windows 通信。但是,并非所有函数都相同,因为 VB 使用不同的数据类型,并且存储数据的方式不同于 C 或 C++。在我们讨论 Win32 API 和 MFC 时,我们将尝试展示如何在 VB 中实现相同的功能。
Visual Basic 使用 STDCALL 调用约定来实现函数调用。大多数 Win32 API 也使用 STDCALL 调用约定,因此编译器完成了大部分接口这两个约定所需的繁重工作。另一方面,C 和 C++ 默认情况下不使用 STDCALL,如果您想手动将 VB 对象代码文件与 C 对象代码文件链接,则需要明确将 C 接口设为 STDCALL 接口。
Microsoft 为 Windows 实现了一种称为组件对象模型的技术。COM 本质上将面向对象编程范式提升到了一个新的高度,通过标准化类接口,并允许用不同语言(C++、VB 等)编写类,并无缝地相互连接。COM 程序(或“COM 客户端”)可以用大多数允许面向对象的语言编写。更准确地说,COM 的唯一语言要求是代码是用能够创建指针结构的语言生成的,并且可以显式或隐式地通过指针调用函数。
许多其他编程语言已在 Windows 系统上实现,并且其中许多都具有某种方法来连接 Win32 API 或 MFC 库。这些接口统称为包装器,因为它们将 Win32 API 的功能包装在另一种编程语言中。Perl、Ada、Python、PHP、AutoIT 等都提供了通用的包装器。