楼主 fangjianp |
Q:为什么要对 Windows API 进行封装? A:在实际应用中,常常要将 API 调用封装为自己的 VBA 函数,用于代替模板中原来使用 Windows API 的部分,这样处理的原因有: 1、在调用 API 函数之前可以先进行 VBA 的有效性检验,如果将无效的参数传递给 API 函数,可能会导致系统的崩溃; 2、大部分文本性的 API 函数都要求定义字符串变量,然后把它传递到函数内部进行处理。使用 VBA 函数可以隐藏这些复杂性; 3、许多 API 函数提供了一些根本用不上的参数,而 VBA 程序只显示应用程序中需要用到的参数; 4、极少部分 API 函数可以被单独调用,大部分都需要额外的预处理,并且在调用完成后进行清除而使用 VBA 程序可以避免这些复杂的操作; 有关 Windows API 需要封装处理的其他原因将在另外的贴中加以说明。 |
2楼 fangjianp |
Q:为什么要对 Windows API 进行封装?(续) A:在我的酷贴 http://www.exceltip.net/thread-21666-1-1.html 中已经罗列了若干个封装调用 Windows API 函数的原因,这样处理的原因还有: 5、在模块内,API 声明是私有的,对其他开发者而言,由于不知道如何使用这些 API,所以对他们来说这些 API 相当于是隐藏的。而在 VBA 中可将这些功能设置为可见; 6、部分 API 函数,比如加密函数或 Internet 函数,在打开资源之前需要一系列的初始化操作,在使用完成后,关闭资源时又需要一系列的清除操作。将这些初始化和清除的操作封装到类模块中,然后利用 Class_Initialize 和 Class_Terminate两个过程可以确保正确无误地打开和关闭资源; 7、将特定的 API 封装为中间模块,使他们具有自我包含性,以便能在应用程序之间方便地使用它们; 8、当应用程序之间包含大量的 API 调用时,要清楚地分清哪些常量属于那些函数会变得相当困难,但如果将常量封装为枚举类型并把这些类型作为 VBA 函数的参数,那么,常量的管理会变得相对较为容易。 总之,对 API 进行包装一方面是 API 函数本身的特性所要求的,另一方面也可以使得 API 的调用变得相对较为简单、API 函数的管理将较为容易。 |
3楼 海洋之星 |
谢谢分享 |
4楼 水星钓鱼 |
学习了。 |