26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx

上传人:b****3 文档编号:4421687 上传时间:2022-12-01 格式:DOCX 页数:15 大小:637.69KB
下载 相关 举报
26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx_第1页
第1页 / 共15页
26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx_第2页
第2页 / 共15页
26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx_第3页
第3页 / 共15页
26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx_第4页
第4页 / 共15页
26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx

《26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx》由会员分享,可在线阅读,更多相关《26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx(15页珍藏版)》请在冰豆网上搜索。

26修正增强版10十天学会易语言图解教程王军文字校正第十章.docx

26修正增强版10十天学会易语言图解教程王军文字校正第十章

第10章API函数的应用

API函数,也称DLL命令,是Windows系统外部动态链接库(即DLL库)中的命令。

和VB,VC一样,易语言对API也有很好的支持。

API是Windows的基础,学会使用API就可以实现Windows绝大部分的功能。

本章学习内容:

10.1如何定义API函数10.3外部DLL库的应用

10.2API函数的综合应用10.4课后练习

 

10.1如何定义API函数

④在窗体上拉出一个按钮组件。

形成“按钮1”。

并且双击它。

④在窗体上拉出一个按钮组件。

形成“按钮1”。

并且双击它。

④在窗体上拉出一个按钮组件。

形成“按钮1”。

并且双击它。

④在窗体上拉出一个按钮组件。

形成“按钮1”。

并且双击它。

④在窗体上拉出一个按钮组件。

形成“按钮1”。

并且双击它。

易语言中,使用一个API函数前(也称DLL命令),首先要对该函数进行定义,定义DLL命令涉及到以下主要属性:

Dll命令名、返回值类型、Dll库文件名、Dll命令在Dll库中对应的函数名、Dll命令参数。

  

下面用一个可以取出当前所有窗口句柄的例程,来进一步了解DLL命令的定义方法和使用。

①添加一个按钮组件,并将标题改成“列出桌面所有子窗口的窗口句柄”。

②添加一个列表框组件。

注意:

API资料如何查找?

Windows中的DLL命令有很多,网上也有许多API的资料包括帮助文档,列出了常用的API函数。

使用API之前,可以先上网下载一个API帮助文档。

下面会用到1个DLL命令:

FindWindowExA,这个命令可以在窗口列表中寻找与指定条件相符的第一个子窗口。

26提醒注意:

FindWindowExA就必须写成FindWindowExA,注意大小写,不能写成findwindowexa,否则程序运行会出错,提示找不到FindWindowExA,我学习的过程中就犯了这个错误!

DLL命令名:

指定DLL命令在易语言中使用时的名称,可以自定义,最好是选一个方便识别的名称。

④新建一个DLL命令。

DLL库文件名:

DLL命令所在的DLL库文件名。

按照API资料来填写,不可以自定义。

在DLL库中对应文件名:

与上边“DLL命令名”所指定的DLL命令对应的DLL库文件中相应的API函数名(即API函数的原名)。

按照API资料来填写,不可以自定义。

API资料中描述的,有几个参数,就添加几个参数,并且各参数的类型和位置要和资料中的相一致,但参数名可以自定义。

从API的帮助文件里可以查出User32是DLL库文件名,FindWindowExA是API函数原名。

这里有四个参数的类型与说明。

⑥双击按钮,在“_按钮1_被单击”事件子程序中输入如下代码:

列表框1.清空()

hWnd=取子窗口句柄(0,0,0,0)

判断循环首(hWnd≠0)

列表框1.加入项目(到文本(hWnd),)

hWnd=取子窗口句柄(0,hWnd,0,0)

判断循环尾()

⑤新建一个整数型的变量。

用判断循环首命令,循环取出当前所有子窗口的窗口句柄。

按下F5键运行程序,点击按钮后,列表框就列出了所有子窗口的窗口句柄了。

 

10.2API函数的综合应用

用API函数,可以实现很多特殊的效果,下面练习用3个DLL命令实现窗体的透明效果。

 

本例程中用到了3个DLL命令,分别是:

GetWindowLong:

从指定窗口的结构中取得信息。

SetWindowLong:

在窗口结构中为指定的窗口设置信息。

SetLayeredWindowAttributes:

设置窗体的透明色。

①添加一个滑块条组件。

②将滑块条的刻度类型属性设置成“下/右”。

③对这3个DLL命令进行定义。

如果库文件名是:

Kernel32.dll、Gdi32.dll、User32.dll、Mpr.dll、Advapi32.dll,填写时可以省略,系统会自动搜索。

注意:

API函数中常量的使用

使用DLL命令时,会有一些参数用到API中的常量,这些常量可以使用API常量查询工具查找,并在易语言中使用自定义常量进行定义,使用时可以用常量名(记得在常量名前加上“#”号),也可以直接将常量值添入参数中。

④双击“_启动窗口”,产生“_启动窗口_创建完毕”事件子程序,然后新建一个整数型变量Ret。

⑤在子程序下输入代码:

Ret=GetWindowLong(取窗口句柄(),-20)

Ret=位或(Ret,524288)

SetWindowLong(取窗口句柄(),-20,Ret)

SetLayeredWindowAttributes(_启动窗口.取窗口句柄(),0,255,#LWA_ALPHA)

⑥在滑块条的事件列表中选择“位置被改变”事件,产生“_滑块条1_位置被改变”事件子程序。

⑦在子程序下输入代码:

SetLayeredWindowAttributes(_启动窗口.取窗口句柄(),0,滑块条1.位置,#LWA_ALPHA)

运行程序,然后拖动滑块条,可以看到,窗体渐渐变的透明,直到完全透明。

26:

运行了,如何?

不能透明?

我的也不行win7xp都试了不成功数值类型我也想过更改,都没办法达到效果。

我就这点能耐了,哪位好心人看到实现了效果请告知一声!

如果不用dll,直接用易语言语句能得到效果,提示如下图:

10.3外部DLL库的应用

前2节都是介绍基本WindowsAPI库文件,但API的使用方法多种多样,不但可以使用Windows自带的DLL命令,而且可以使用外部的DLL库中的DLL命令,本节就使用一个外部的DLL库,来做一个水纹特效。

①新建一个易程序,然后,添加一个时钟组件。

注意:

该例程要使用到一个外部DLL库,在编写程序前,先从随书光盘中将WaterDll.dll文件拷贝到本地机器上,并一同将随书光盘中的“例图01.bmp”拷贝到程序所在的目录下。

(26:

例图01.bmp我找不到,WaterDll.dll我会放在压缩包里面,等下需要使用bmp格式的图,就一定要bmp,不支持jpg。

本例程要用到2个默认DLL库中的命令,和3个外部DLL库中的命令。

2个user32.dll中的命令:

GetDC:

获取指定窗口的设备场景

LoadImage:

载入一个位图、图标或指针

3个WaterDll.dll中的命令(外部DLL库):

外部DLL库中的命令使用方法,参见外部DLL库自带的帮助文档,没有帮助文档也可参见例程,或在实际使用的时候给命令参数不同的值看看出现的效果,自己理解DLL库中命令的作用。

 

②定义默认DLL库中的命令。

26:

查查包内给大家的vbapi帮助文档吧!

由于是外部DLL库,所以,DLL库文件名要填写清楚。

③定义外部DLL库中的命令。

命令中各参数可以照书中填写,各参数的作用,可以编写完程序后,更改参数的值,进行调试,就可以了解命令中的各个参数了。

④双击“_启动窗口”产生了“_启动窗口_创建完毕”事件子程序,并新建一个整数型变量“bitmap”。

用来存放LoadImage命令的返回值。

16是常量#LR_LOADFROMFILE的常量值,使用常量查询工具查出。

⑤在“_启动窗口_创建完毕”事件子程序中输入如下代码:

时钟1.时钟周期=10

bitmap=LoadImage(0,取运行目录()+“\例图01.bmp”,0,0,0,#LR_LOADFROMFILE)

WaterInit(bitmap)

⑥双击时钟组件,在“_时钟1_周期事件”事件子程序下输入如下代码:

WaterTimer(GetDC(_启动窗口.取窗口句柄()),0,0)

⑦将子程序的返回值设置成“逻辑型”。

⑧在启动窗口的事件选择列表框中选择“鼠标位置被移动”选项,在“_启动窗口_鼠标位置被移动”事件子程序下输入如下代码:

WaterMouseAction(GetDC(_启动窗口.取窗口句柄()),0,0,横向位置,纵向位置,5,100)

26:

特别说明下,如果是自己准备的图片,会发现运行后图片是垂直翻转的,该怎么办?

大家应该会自己想办法吧,O(∩_∩)O~

运行程序,然后在窗体上移动鼠标,就可以看到逼真的水纹效果了。

提示:

GetMessagePos:

模拟鼠标移动;

keybd_event:

模拟键盘按下。

10.4课后练习

(1)学着使用API函数的帮助文档:

这里是DLL声明,分别声明模拟键盘与模拟鼠标移动的两个DLL命令。

26:

此API函数的帮助文档我会放在压缩包里面!

(2)使用简单的API,制作一个模拟键盘按下“Win键+D”,和模拟鼠标移动的程序。

在“_启动窗口”中添加两个按钮,分别双击按钮组件,以进入被单击事件子程序,并输入程序代码。

最后按F5键运行程序,看看效果。

26:

严谨点说:

这里的备注应该写win键+d键吧,

win+d和win+m还是有少许区别的!

最后一个练习,我没做成功,汗。

希望成功的友友说下经验。

---完

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1