| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
一步一步跟我学易语言-第二十一章:Dll命令
作者:未知    文章来源:网络    点击数:    更新时间:2006-8-18
  首先声明:本章内容只适合对 Windows 系统的 API 函数有所了解的中级用户,初级用户可以跳过本章。

    在上一章的程序中,我们定义了两个 Dll 命令:俘获鼠标、释放鼠标,它们所对应的 Windows API 函数分别为 SetCapture 和 ReleaseCapture 。在程序中使用这两个 API 函数可以保证当鼠标移到画板1外面时,画板1仍然能够接收到鼠标事件。

    请新建一个程序,我们来继续了解有关 Dll 命令的其它情况。

    1、插入一个自定义数据类型,将其名称改为“矩形”,为其增加左边、上边、右边、下边四个整数型成员;

    2、插入一个 Dll 命令,将其名称改为“取窗口当前位置”,返回值设置为逻辑型,在“本Dll命令在Dll库中的对应命令名”栏中输入“GetWindowRect”,然后加入一个名为“窗口句柄”的整数型参数和一个名为“返回位置”的矩形型参数;

    3、插入一个 Dll 命令,将其名称改为“取系统目录”,返回值设置为整数型,在对应命令名栏中输入“GetWindowsDirectoryA”,然后加入一个名为“返回文本储存区”的文本型参数和一个名为“文本储存区尺寸”的整数型参数;

    4、继续插入一个 Dll 命令,将其名称改为“取键盘速度”,返回值设置为逻辑型,在对应命令名栏中输入“SystemParametersInfoA”,然后顺序加入四个名称分别为“查询动作”、“查询参数”、“返回数据”、“更新标志”的整数型参数,并将“返回数据”参数的传址属性设置为真;

    5、在_启动窗口中加入一个按钮,双击它,在_按钮1_被单击子程序中加入一个名为“文本容器”的文本型容器、一个名为“容器1”的整数型容器、一个名为“容器2”的整数型容器、一个名为“窗口位置”的矩形型容器;

    6、输入以下语句:

        文本容器 = 取空白文本 (260)
        容器1 = 取系统目录 (文本容器, 取文本长度 (文本容器))
        取键盘速度 (10, 0, 容器2, 0)
        取窗口当前位置 (取窗口句柄 (), 窗口位置)
        信息框 (“Windows系统目录为: ” + 文本容器 + “ ,目录文本长度为: ” + 到文本 (容器1) + #换行符 + “键盘速度为: ” + 到文本 (容器2) + #换行符 + “窗口左边:” + 到文本 (窗口位置.左边) + #换行符 + “窗口顶边:” + 到文本 (窗口位置.上边), 0, )

----------------------------

    在上面的程序中,我们通过 Dll 命令使用了三个外部函数:GetWindowRect、GetWindowsDirectoryA、SystemParametersInfoA ,因为它们都是 Windows API 函数,所以“Dll库文件名”栏可以省略不填,系统将自动搜寻所有基本 Windows API 库文件(Kernel32.dll、Gdi32.dll、User32.dll、Mpr.dll、Advapi32.dll),否则必须提供该 Dll 命令所在的 Dll 文件名称。在“本Dll命令在Dll库中的对应命令名”栏中必须输入该 Dll 命令在库文件中的输出名称,系统将使用它在 Dll 文件中寻找对应的调用入口。

    在设置 Dll 命令的参数时,必须保证参数的顺序、数据类型都与实际的 Dll 外部函数一致,如果某个参数需要地址指针,将“传址”属性置为真即可。对于文本型、字节集型、自定义数据类型参数和数组参数,系统将自动传递地址指针,这就是 GetWindowRect 中的“返回位置”和 GetWindowsDirectoryA 中的“返回文本储存区”参数没有设置“传址”属性的原因(也可以设置,不过是多余的)。

----------------------------

    附:将 Win32Api.txt 中的定义转换到易语言中的方法。

    由于时间有限,易语言目前还没有提供现成的 Dll 命令定义表以供用户使用 Windows 的 API 函数,您可以按照以下大致规则来转换:

    1、由于易语言是纯粹的 32 位编程系统,而 VB 是从 16 位版本发展过来的,所以 VB 中的 Long 对应易语言中的整数型;

    2、如果某参数具有 ByRef 属性,请在易语言中将“传址”属性选中;

    3、如果某参数的类型为复合类型,如 RECT ,需要先在自定义数据类型表中定义出该数据类型。


相关文章