• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >易语言 > 易语言API高级技巧总结

易语言API高级技巧总结

作者:易语言帮助手册 字体:[增加 减小] 来源:互联网 时间:2018-11-19

易语言帮助手册通过本文主要向大家介绍了易语言,API等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

首先声明,本文的读者该卖是:具有相当的易言语基础的、能较熟练地把常用的的API从VB/C声明转换到易言语DLL命令的易言语喜欢者。

1,使用指针

易言语中出于安定、方便考虑,没有直接提供指针,这正在进行一些高级 纵时不是很方便,固然有一些第三方支撑库可以取出变量指针(比如我的eLib++ 注:该支撑库系Delphi开发,本人已开放源代 ,你可以到易言语下载区瞧瞧)但是仅仅为了这个 纵就带上一个支撑库不太值得。实在用一个API,加上一些技术就可以欺骗Windows和易言语,让它们报告你一个变量的指针。
这个API是lstrcpyn。用过C开发Windows下的步骤的朋友可能对这个API相比熟识,就是字符串拷贝。正在windows下取代C准则库函数strncpy的。字符串拷贝怎样能获得变量指针呢?秘密就正在这个API的返回值:

瞧瞧MSDN:“If the function succeeds, the return value is a pointer to the buffer”

该函数把第二个参数指定的字符串双制到第一个参数指定的字符串,第三个参数指定双制的长度。假如双制成功,返回第一个参数(缓冲区buffer)的地点。瞧到了吗?它返回第一个参数的地点!!那么我们把需求取地点的变量给它的第一个参数,然后想要领让它双制成功,它不就返回了那个变量的地点了吗?

界说一个DLL命令如下:

Dll命令:取文本指针

返回值类型:整数型

正在Dll库中的命令名:lstrcpyn

参数:欲取其指针的文本 数据类型:文本型 <传址>

参数:欲取其指针的文本 数据类型:文本型 <传址>

参数:保存 数据类型:整数型 备注:0

这样挪用:

文本1 = “abcdefg”

指针1 = 取文本指针 (文本1, 文本1, 0)

把文本1双制到自己,双制长度为0字节(也就是什么都不双制),然后返回文本1的指针。就这么简略。先报告Windows我要双制一个文本到某个内存地点,但同时报告它我什么都不双制,它实践上帮你取出了这个文本的指针。

上面的例子是取文本的指针,其他类型的变量也一样的,由于正在API内部(实在是正在内存中)什么类型的变量都体现为一块内存区域,原理是一样的。但是易言语是强制类型的言语,所以这次要骗骗易言语了,呵呵,再界说这个API的一个新版本,把它的参数界说成你想要的类型就可以了。

Dll命令:取整数指针

返回值类型:整数型

正在Dll库中的命令名:lstrcpyn

参数:欲取其指针的整数 数据类型:整数型 <传址> 备注:一定要传址

参数:欲取其指针的整数 数据类型:整数型 <传址> 备注:一定要传址.重双一次

参数:保存 数据类型:整数型 备注:0

2,非凡的结构用字节集代替

Window98及其后的 纵零碎提供了一个非常棒的API :GradientFill,利用这个API可以方便地画出渐变的效果。

这个API倒不是很麻烦,参考MSDN我们很快就可以正在易言语中界说出这个DLL命令:(以渐变填充矩形为例)

Dll命令:GradientFill
返回值类型:逻辑型
Dll库文件名:Msimg32.dll
正在Dll库中的命令名:GradientFill
参数:hDC 数据类型:整数型
参数:pVertex 数据类型:TRIVERTEX
参数:dwNumVertex 数据类型:整数型
参数:pMesh 数据类型:GRADIENT_RECT
参数:dwNumMesh 数据类型:整数型
参数:dwMode 数据类型:整数型

其中TRIVERTEX 和GRADIENT_RECT时自界说的数据类型:

自界说数据类型:TRIVERTEX

成员:x 数据类型:整数型
成员:y 数据类型:整数型
成员:Red 数据类型:短整数型
成员:Green 数据类型:短整数型
成员:Blue 数据类型:短整数型
成员:Alpha 数据类型:短整数型

自界说数据类型:GRADIENT_RECT

成员:UpperLeft 数据类型:整数型
成员:LowerRight 数据类型:整数型

凭据MSDN的阐明,基础没有标题,但是假如你挪用这个函数,你不会成功的。为什么?我报告你缘由正在TRIVERTEX的界说上。你或许会说,这个没有标题啊,MSDN上界说如下:

typedef struct _TRIVERTEX {
LONG x;
Long y;
COLOR16 Red;
COLOR16 Green;
COLOR16 Blue;
COLOR16 Alpha;
}TRIVERTEX, *PTRIVERTEX;

C言语的LONG 和Long正在Windows 32位下是32位,对应于易言语“整数型”,COLOR16为十六位,对应于易言语的“短整数型”没有标题啊!那假如我再报告你,易言语中的自界说数据类型的成员均是四字节对齐的,你该理解了吧。是的,易言语中的自界说数据类型的成员均是四字节对齐的,假如不敷四字节,会主动对齐到四字节的。具体到上面的界说,Red,Green,Blue,Alpha固然被界说为“短整数型”但是正在易言语内部,它们均被扩充为“整数型”了。这就是题手法泉源。解决的要领就是用字节集代替自界说数据结构。易言语的字节集不存正在四字节对齐的标题。

Dll命令:GradientFill

返回值类型:逻辑型
Dll库文件名:Msimg32.dll
正在Dll库中的命令名:GradientFill
参数:hDC 数据类型:整数型
参数:pVertex 数据类型:字节集
…… ………………..

这样界说就可以了。为了方便地生产所需求的字节集数据,我有界说了一个子步骤:

子步骤:TRIVERTEX到字节集

返回值类型:字节集

备注:由于内存对齐的缘由,务必把TRIVERTEX类型转换为字节集才可以挪用API成功

参数:VertEX 数据类型:TRIVERTEX <数组>

局部变量:元素个数 数据类型:整数型
局部变量:变量 数据类型:整数型
局部变量:数据 数据类型:字节集

元素个数 = 取数组成员数 (VertEX)

计次循环首 (元素个数, 变量)

数据 = 数据 + 到字节集 (VertEX [变量].x)
数据 = 数据 + 到字节集 (VertEX [变量].y)
数据 = 数据 + 到字节集 (VertEX [变量].Red)
数据 = 数据 + 到字节集 (VertEX [变量].Green)
数据 = 数据 + 到字节集 (VertEX [变量].Blue)
数据 = 数据 + 到字节集 (VertEX [变量].Alpha)
计次循环尾 ()
返回 (数据)

具体的请瞧附带的例程

其他具有类似特 (参数或结构中有非四字节的)的API都可以用上述的要领来变通解决。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解易语言写ec模块的方法
  • 简单的易语言多线程应用实例
  • 易语言修改IE协议头留言手机版网页
  • 易语言拖放对象组件应用详解
  • 易语言dll文件传递字节集参数解析
  • 易语言目录框的目录被改变后取得改变后的目录并在编辑框中显示
  • 易语言操作硬盘txt扫描删除
  • 易语言模拟客户组件post发送数据
  • 易语言BUG及解决办法
  • 易语言设置在驱动器框中显示指定的驱动器类型

相关文章

  • 2017-05-28易语言基础教程之制作简易浏览器
  • 2018-11-19易语言近似等于命令使用讲解
  • 2018-11-19易语言保持标题条激活状态颜色总是明亮的
  • 2017-05-28零基础易语言入门教程(四)之数据类型
  • 2018-11-19易语言中Packcom的使用方法
  • 2018-11-19易语言数组清零命令使用讲解
  • 2018-11-19易语言设置月历由星期几作为首日的方法
  • 2017-05-28易语言基础教程之简单的人机交互
  • 2018-11-19易语言取空白文本命令使用讲解
  • 2018-11-19一步一步跟我学易语言之初学者的常见问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 易语言编写程序即时查询对应帮助信息的方法
    • 易语言获取组合框项目数量的方法
    • 易语言的即时输入提示使用方法
    • 易语言在画板中画一个填充矩形的方法
    • 一步一步跟我学易语言之自定义数据类型
    • 详解易语言的DNS缓存
    • 易语言连续赋值命令使用讲解
    • 易语言改变列表框的排列方式
    • 易语言取符号命令使用讲解
    • 易语言更改指定窗口位置和大小的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有