易语言与WIN32 API的使用
本人也是个小菜鸟啦。。
今天写这个,就是为了一下比我还新手的同学参考参考的资料。。
----------------------
基础知识:
先来了解一下,什么的动态链接库
动态链接库
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL 中,该DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。
其实你的系统就有很多的动态链接库,例如KERNEL32.DLL
再看看,什么是API。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
推荐API工具,是易语言自带的API助手,一般在X:\e\wizard\API助手
如下图,,很好用,很强大哦。。
可以看出,有了API,我们编程的生活是多么的美好,很多函数都不需要我们亲力亲为的去写,只要调用就OK了。。
然后,我们来看一下数据类型。。因为在API中有很多地方使用了结构体(看百度哦),为了对
这些结构体进行匹配,所以在易语言中我们也要对他建立相应的数据类型。。
例如这是C语言的结构体格式
SYSTEMTIME Structure
The SYSTEMTIME structure has the following form:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
而我们如果想在易语言中实现他,就可以这样定义
.版本2
.数据类型系统时间_, , SYSTEMTIME
.成员年, 短整数型, , , wYear
.成员月, 短整数型, , , wMonth
.成员星期, 短整数型, , , wDayOfWeek
.
成员日, 短整数型, , , wDay
.成员小时, 短整数型, , , wHour
.成员分, 短整数型, , , wMinute
.成员秒, 短整数型, , , wSecond
.成员毫秒, 短整数型, , , wMilliseconds
你可能会奇怪,我怎么知道什么WORD 是什么类型。。OK,这个没关系,易语言API助手他自己为我们建立了匹配的数据类型、、如果想知道,自己也可以百度哦。。
还有一个就是指针。。
就是易语言参数中的参考和传址,他们两个确保程序修改的变量始终是一个,就是怎么说呢,指针保存的是变量的地址,计算机中的内存都是编址的,就像你家的地址一样,只有到地址,就可以准确的到你本人了,而指针就是变量的地址,他可以准确无误的到变量。
但是如果是单纯的变量,每一个形参和实参都是两个变量了,所以你对形参的修改是无法达到对实参的修改的。。
(PS:形参就是你定义函数时候写的参数,实参就是你调用函数传的参数)
PS2:好吧,如果听不明白也没关系。。。。
好吧,暂时就说这些知识,如果后面遇到的再说。。
--------------------
1.1 消息框API
嗯,今天教大家怎么添加API到易语言中使用,而且用API创建一个比易语言的信息框更加
自由的消息框。。
首先我们在易语言的工作夹上面选到“程序”页面,然后我们在页面上可以肯定“DLL命令”,我们右键,选择插入DLL命令,然后就会跳转到新建API的页面了!然后在DLL定义表(就
是打开的那个空白的窗口)右键,选择“新DLL命令”,或者使用组合键CTRL+N键添加。
然后在DLL表中添加对应的API函数的库名字(就是属于哪一个动态链接库的[dll]),库中对应
的命令名就是说他的DLL中的函数名称,参数,和返回值。当然了,DLL命令名我们是可以
自己更改的(图上写着“DLL命令1”这一栏我们是可以自己定义的)。
好,我们给他添加一个API消息框。
易语言的信息框信息框应该也是封装了API的函数的,只是他把夫窗口句柄默认设置为主窗口,所以我们使用易语言信息框的时候,总是只能在点玩信息框后才能操作窗口。今天我们就做一个可以自己定义父窗口的消息框。
我们这次用的的API命令在API小助手不到,应该开发者觉得不需要吧。
易语言教程2020
好,他没有封装,我们也可以自己搞一个。。
他的函数原型是:
int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT UType);
注意
返回值是int,也就是函数前面的类型,int=整数型
HWND是句柄类型,我们可以使用整数型代替。
LPCTSTR代表易语言中的文本型
UINT代表是易语言中的短整数型。
既然知道了具体参数和返回值,那么我们就添加吧。
我们可以查到,他所属的dll是USER32.DLL,大家可能说“谁知道他在哪里?”,这个很简单,只要你在百度搜函数名,在百度百科是一般会有所属的,如果说属于user32.lib,那么就是属于user32.dll中的。
当然,在易语言的API助手中,他也为我们标明了大部分所属DLL文件。
就是图上那样写。。
但是大家可以发现,库文件对应名字我写的是MessageBoxA,不是说MessageBox吗?
是的,A代表的是ASCLL版本的,在易语言中的API很多都是使用ASCLL版本的。
好,既然函数定义好了,那么使用吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。