精易论坛
标题:
【开源】【2014.11.28】易语言编写支持库模版,组件、命令、常量等、、、
[打印本页]
作者:
SalHe
时间:
2014-11-28 20:26
标题:
【开源】【2014.11.28】易语言编写支持库模版,组件、命令、常量等、、、
!!!!!!本次模版需要使用黑月编译资源
!!!!!!也就是说动态库要用黑月编译
!!!!!!不想用黑月的请自行方便
!!!!!!嗯,本人非美化出身,图标丑了谅解下
!!!!!!本模版采用支持库第二版
!!!!!!何为第二版?(详细请见 e\sdk\cpp\docs.txt)
!!!!!!易支持库有两个版本的开发包:2003.5 和 2008.5
!!!!!!两个版本的支持库截然不同
!!!!!!连支持库入口函数都不一样(即模版中的 GetNewInf)
!!!!!!模版里我也不打算兼容两种支持库版本了
!!!!!!毕竟没多大意义
!!!!!!因为各位易友几乎都用的是 5.x 版本
!!!!!!当然,也可以认为我懒
!!!!!!更新内容只声明与支持库相关的更新
!!!当前版本:2014.11.28
!!!更新内容:
!!! [+]更新FNE转LIB工具(V1.0)
!!! ★主要为本次模版更新而更新
!!! [!]删除对组件英文名称的修改
!!! ★源:如果【静态库模式=#静态库模式_WonderWall】, 那么英文名会加上 @4
!!! ★现:不对组件英文名做任何修改
!!! ★ *这些星星后的内容可以看看, 也可以跳过, 我只是做了下更新的解释
!!! ★ 本来完成这些模版就可以不用更新了的
!!! ★ 谁知发现犯了错?一个人敲代码真麻烦
!!! ★ 今天刚好周五, 我又翻了翻支持库
!!! ★ 然后发现无法静态链接, 看了看易语言的调试信息
!!! ★ 才知道易语言静态链接时会自动给窗口单元函数加上 @4
!!! ★ 现在删掉了那条代码
!!!历史版本:2014.11.22
!!!更新内容:
!!! [+]支持编写组件(详细请见本人写的例子)
!!! ★其实这次的更新就是为了组件而更新的
!!! [+]增加程序集:集_组件, 主要用于辅Zhu组件的编写
!!! [+]增加 备选文本_生成_备选数值信息()
!!! [+]增加 备选文本_生成_备选文本信息()
!!! [+]增加 备选文本_生成_文件名()
!!! [+]增加 组件_保存_组件基本信息_创建时()
!!! [+]增加 组件_保存组件信息()
!!! [+]增加 组件_取结构_hUnit()
!!! [+]增加 组件_取结构_hWnd()
!!! [+]增加 组件_创建_功能组件()
!!! [+]增加 组件_创建_容器组件()
!!! [+]增加 组件_窗口过程_透明容器()
!!! [+]增加 组件_消息欲处理_功能性窗口()
!!! [+]增加 组件_消息欲处理_容器性窗口()
!!! [+]增加 组件_取单元信息()
!!! [+]增加 组件_消息转发_容器窗口()
!!! [+]在 类_写易库 上做了某些更改
!!! [+]增加 添加组件() 方法
!!! [+]增加 添加组件属性() 方法
!!! [+]增加 添加事件() 方法
!!! [+]增加 添加事件参数() 方法
!!! [!]修改 添加参数() -> 添加命令参数()
!!! [+]在 类_易功能 上做了某些更改
!!! [+]增加 创建CWnd指针() 方法
!!! [+]增加 取hUnit() 方法
!!! [+]增加 产生事件() 方法
!!! [+]增加 组件删除() 方法
!!! [+]在 类_信息储存 上做了某些更改
!!! [+]增加 添加属性() 方法
!!! [+]增加 取属性数量() 方法
!!! [+]增加 拷贝属性() 方法
!!! [+]增加 添加事件() 方法
!!! [+]增加 取事件数量() 方法
!!! [+]增加 拷贝事件() 方法
!!! [+]增加 添加事件参数() 方法
!!! [+]增加 取事件参数数量() 方法
!!! [+]增加 拷贝事件参数() 方法
!!! [+]增加 类_属性 共6个方法
!!! [+]在 集_结构创建 上做了某些更改
!!! [+]增加 new组件信息() 方法
!!! [+]增加 new组件属性信息() 方法
!!! [+]增加 new单元信息() 方法
!!! [+]增加 new组件事件信息() 方法
!!! [+]增加 new组件事件参数信息() 方法
!!! [+]在 集_功能 上做了某些更改
!!! [+]增加 计算指针() 方法
!!! [+]增加 IsXXX() 方法
!!! [+]在 集_模版 上做了某些更改
!!! [+]增加 默认处理_窗口单元接口函数() 方法
!!! [+]增加 组件_保存_xxx() 模版函数
!!! [+]增加 组件_释放_xxx() 模版函数
!!! [+]增加 #结构尺寸_xxx 常量 5 个
!!! [+]增加 #组件属性类型_xxx 常量 21 个
!!! [+]增加 #组件属性属性_xxx 常量 5 个
!!! [x]压缩包内不包含静态库转换工具
!!! ★因为静态库转换工具没做任何更新
!!! ★所以就不一起带着了
!!! ★如果你真的需要
!!! ★请到论坛找我的帖子
!!!历史版本:2014.11.15
!!!更新内容:
!!! [+]支持编写静态库(至于步骤请往下看)
!!! [+]增加静态库转换工具, 在随本模版的压缩包内(源码)
!!! [+]增加 类_写易库.设置_静态库模式() 方法, 用于指定静态库的导出函数名
!!! [-]对 类_写易库.添加命令() 做了改动,主要修改链接名
!!! [-]修复
易语言
无法读取链接名的BUG
========== 1.易支持库机制 ==========
!!!易支持库的库信息、命令信息等等均使用某个结构储存
!!!易源码中的自定义数据类型、类模块、组件即为支持库中的库定义数据类型
!!!易语言通过 GetNewInf() 获取支持库信息
!!!所以支持库必须导出这个函数
========== 2.支持库命令调用 ==========
!!!支持库的命令调用方式也比较特殊
!!!每个命令需要三个参数:返回值指针,参数数目,参数信息指针
!!!做个一个库定义数据类型的方法, 每个方法的第一个参数为指向该对象的结构指针
!!!作为一个组件的方法, 每个方法的第一个参数为该组件的单元信息
!!!在模版里我也举了例子
========== 3.简单说下易源码 ==========
!!!易保存源码时没有保存各信息名称(比如命令名、数据类型名),而是保存了索引
!!!所以支持库内的各信息有必要时可以修改
!!!但不要改动TA们的顺序,这会导致前期版本的源码出现问题
========== 4.模版说明 ==========
!!!本模版整天来说思路清晰,代码连小白都能理解
!!!模版多数的参数使用通用型,使得模版简便
!!!模版内没有多说废话, 直接把关键的过了一遍, 足够写支持库了
!!!每条命令都演示了支持库的各种操作,能想到的都先写了
!!!趁着到了周末, 把组件的开发也模块化了
!!!例子也写好了, 自己看看吧
========== 5.关于静态库 ==========
!!!静态库的编译本人提供了两种方式,不过两种方式都必须要符合下面的要求
!!!必须导出(易语言里打上公开属性)库信息通知函数, 函数名必须符合 libName_ProcessNotifyLib 的规则
!!!必须导出所有命令实现函数,函数名必须符合 libName_xxx 的规则
!!!必须导出所有窗口单元信息函数,函数名必须符合 libName_GetInterface_控件英文名。2014.11.13这个版本的模版包括前面的暂时木有组件,所以不会有这个函数
!!!
!!!第一种方法(#静态库模式_SalHe)
!!!将支持库编译
!!!此时还不能做为静态库发布
!!!使用本人写的工具 FNE转LIB 将编译后的支持库转换
!!!转换之后的文件即可作为静态库发布了
!!!工具的使用方法详见工具的自我介绍
!!!
!!!第二种方法(#静态库模式_WonderWall)
!!!下载一个易语言支持库(插件):WonderWall
!!!易语言勾上这个支持库之后并开启静态库编译功能(易语言菜单 -> 工具 -> WonderWall)
!!!易语言菜单 -> 编译 -> 静态库编译, 即可
!!!
!!!至于我写的那个工具也放得有源码, 所以要知道原理的话可以看看源码
!!!
!!!那么WonderWall编译静态库为什么要另外弄个模式呢?请转到 类_写易库.添加命令() 查看, 看的更清楚
========== 6.为何选择支持库 ==========
!!!其实用模块扩展程序也是足够了
!!!选择做支持库还是安全的
!!!而且支持库有许多模块做不到的功能
========== 7.关于易功能函数 ==========
!!!顾名思义, 就是易内部提供给支持库的函数
!!!主要的用法呢还是得参考 lib2.h(位于 e\sdk\cpp\elib\lib.h)
!!!虽说是一个C++头文件,但是语文好点、懂易语言就能理解
!!!小学生的语文水平就差不多啦
!!!我还是把一些常用的写到了 类_易功能 这个类里面
!!!各位同学可以看看、、
========== 8.如何提取空白模版 ==========
!!!程序集【启动】不包含模版函数
!!!程序集【_库实现_xxx】不包含模版函数
!!!全局变量无模版所需任何变量
!!!自定义数据类型已做分割
!!!DLL命令已做分割
!!!常量表已做分割
!!!
!!!如果你需要一个空支持库模版
!!!你只要保留 GetNewInf、test_ProcessNotifyLib、Dll入口函数
!!!以及保留模版所需函数、全局变量、自定义数据类型、DLL命令、常量表
!!!这样模版就只剩下主要部分了
========== 【最后】 ==========
!!!直说:本人纯属菜鸟一枚, 各路大神勿喷即可
========== 【信息】 ==========
!!!模版:易支持库模版
!!!作者:SalHe(Rabbit Group)
!!!声明:大鸟勿喷即可
!!!日期:2014年11月28日
!!!论坛:
!!!
精易论坛
:
http://125.confly.eu.org/uid-186545
!!! 易语言官方论坛:
http://bbs.eyuyan.com/u.php?uid=633871
附件:
2014.11.28.zip
(72.61 KB, 下载次数: 304)
2014-11-28 20:22 上传
点击文件名下载附件
下载积分: 精币 -2 枚
FNE转LIB工具:
【开源】【2014.11.28】FNE转LIB工具V1.1,易语言支持库转静态库刚工具
http://125.confly.eu.org/thread-13758905-1-1.html
(出处: 精易论坛)
作者:
江楠
时间:
2014-11-28 20:37
看一下支持一下啊
作者:
狂云梵语
时间:
2014-11-28 20:57
看看,O(∩_∩)O谢谢
作者:
梦生
时间:
2014-11-28 21:11
前排留名,必火
作者:
精易傲世
时间:
2014-11-28 21:21
前排支持下 此贴必火
作者:
leavessoft
时间:
2014-11-28 21:32
不错呢~支持下
作者:
zds19891219
时间:
2014-11-28 23:44
好东西呀。。
作者:
剪刀石头布
时间:
2014-11-29 10:21
感谢大神的无私奉献
作者:
brucelee0720
时间:
2014-11-29 16:54
感谢无私奉献
作者:
xq19970621
时间:
2014-12-1 10:30
感谢大神的无私奉献
作者:
宇智波·佐助
时间:
2014-12-6 21:08
看样子挺专业
作者:
简单的生活
时间:
2014-12-10 01:38
支持下不错的东西啊
作者:
SalHe
时间:
2015-6-13 17:04
一旦本人发现模版中的代码问题会在此更新。
若模版需要大改动,则发布新版本。
源码修正
1、2015-06-13(位于 类_库操作):
子程序名
返回值类型
公开
备 注
调用支持库命令
参数名
类 型
参考
可空
数组
备 注
函数地址
整数型
参数
数据结构
返回值
数据结构
变量名
类 型
静态
数组
备 注
参数数目
整数型
字节集
字节集
call
类_Call
参数数目 =
取数组成员数
(
参数
)
字节集 =
取空白字节集
(
取数组成员数
(
参数
)
×
#结构尺寸_数据结构
)
CopyMemory_数据结构_数组
(
字节集, 参数,
取字节集长度
(
字节集
)
)
call.
自动清参
(
真
)
' 这里的参数就和命令实现子程序的参数一样
call.
参
(
取指针_通用型_参考
(
返回值
)
)
' 参数:返回值指针
call.
参
(
取数组成员数
(
参数
)
)
' 参数:参数数目
call.
参
(
lstrcpyn_字节集
(
字节集, 字节集, 0
)
)
' 参数:首参数信息指针
call.
调用
(
函数地址,
)
' 调用 函数
.版本 2
.子程序 调用支持库命令, , 公开
.参数 函数地址, 整数型
.参数 参数, 数据结构, 可空 数组
.参数 返回值, 数据结构, 参考 可空
.局部变量 参数数目, 整数型
.局部变量 字节集, 字节集
.局部变量 call, 类_Call
参数数目 = 取数组成员数 (参数)
字节集 = 取空白字节集 (取数组成员数 (参数) × #结构尺寸_数据结构)
CopyMemory_数据结构_数组 (字节集, 参数, 取字节集长度 (字节集))
call.自动清参 (真)
' 这里的参数就和命令实现子程序的参数一样
call.参 (取指针_通用型_参考 (返回值)) ' 参数:返回值指针
call.参 (取数组成员数 (参数)) ' 参数:参数数目
call.参 (lstrcpyn_字节集 (字节集, 字节集, 0)) ' 参数:首参数信息指针
call.调用 (函数地址, ) ' 调用 函数
作者:
tigerzoong
时间:
2015-12-1 18:44
cfjp好东西呀。。
作者:
马成佐
时间:
2016-4-15 17:19
感谢楼主分享,非常感谢~~
作者:
1185384801
时间:
2017-5-6 14:42
cfjp好东西呀。。
作者:
无名d晓峰
时间:
2019-4-12 19:05
【开源】【2014.11.28】易语言编写支持库模版,组件、命令、常量等、、、
作者:
abnerll
时间:
2024-7-30 11:19
感谢分享
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4