用c语言写易语言Linux库,C语言编写支持库教程
已有11位网友发表了看法:
三叶资源网 评论于 [2019-01-09 00:14:06]
易语言支持库第一课
什么是易语言支持库?
易语言支持库的开发文档。
前期准备工作,环境,路径配置。
lib2.h 必须文件,包含支持库类型、宏定义等
fnshare.h fnshare.cpp 可选文件,提供了一些常用的代码封装。
-----------------------
入口函数:
[line:75]
#define FUNCNAME_GET_LIB_INFO "GetNewInf" // 取本支持库的PLIB_INFO指针的输出函数名称
typedef PLIB_INFO (WINAPI *PFN_GET_LIB_INFO) (); // GetNewInf的函数原型
LIB_INFO结构体定义 [line:85] - [line:280]
需要注意的位置:m_nMajorVersion,m_nMinorVersion,_LIB_OS,m_pfnNotify
-----
需要了解的数据类型定义及长度:
[line:282]-[line:420]
额外阅读: 3、数据存储方式
-----
支持库环境通知方法*[line:422]
**新版VS不支持默认参数。
同时需要定义:NotifySys [line:444]
------
以上为支持库信息定义,定以后便可以编译生成并且在易语言中调用支持库。
三叶资源网 评论于 [2019-01-09 00:14:27]
易语言支持库第二课
向支持库中添加一些“东西”
添加常量。
添加全局命令。
常量的定义:
LIB_CONST_INFO 定义 [line:468]
修改 : LIB_INFO结构体定义
INT m_nLibConstCount; // 常量数目。 [line:277]
PLIB_CONST_INFO m_pLibConst; // 指向常量定义数组。 [line:278]
---------------
实现全局命令
要向编写一个全局的命令,将要分成3个步骤:
1.定义一个:CMD_INFO [line:539]
注意:_CMD_OS
2.如果存在参数,则定义参数。ARG_INFO [line:608]
将参数信息写入CMD_INFO中。
m_nArgCount [line:601]
m_pBeginArgInfo [line:602]
3.定义命令函数体。 [line:665]
typedef void (*PFN_EXECUTE_CMD) (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf);
例子 [line:766]
三叶资源网 评论于 [2019-01-09 00:14:42]
易语言支持库第三课
多实现几个命令
接上一课作业:
将所有参数定义到同一个argInfo中。
实现“文本型”返回值的命令
CloneTextData 命令:[line:769]
注意指针的使用和释放。
实现“数组型”参数的命令:[line:1426]
GetAryElementInf 命令:[line:825]
实现“通用型”参数的命令:[line:1290]
由于所有类型官方都提供了例子,所以课程不逐一介绍,具体请参见:
[line:762] - [line:2023]
三叶资源网 评论于 [2019-01-09 00:14:58]
易语言支持库第四课
再向支持库中添加一些“东西”
添加一个自定义数据类型
数据类型的定义:[line:2025]
窗口部分在后面的课程中进行介绍,本课主要研究普通数据类型。
数据类型中的方法定义:[line:2102]
注意:方法所属分类category必须为-1.
实现代码中,第一个参数始终为指向其所在数据类型的对象指针。
向数据类型中定义一个普通的成员:[line:2133]
参看:LIB_DATA_TYPE_ELEMENT定义。
扩展: 定义枚举变量[line:2060]
三叶资源网 评论于 [2019-01-09 00:15:10]
支持库编写第五课:
窗口组件的定义: [line: 2253]
为了保证能够和官方核心库完整兼容,窗口定义部分使用 VC98 (6.0) 进行编写。
窗口组件也是一种数据类型,只是该数据类型被标记为窗口组件。
标记为窗口组件的组件需要额外实现一些方法、内容,才能确保程序显示正常。
下面来看具体的介绍:
如果为窗口组件,则在定义数据类型时,要特别注意下面这些:
LIB_DATA_TYPE_INFO 中的 m_dwState, m_dwUnitBmpID, m_nEventCount, m_pEventBegin, m_nPropertyCount, m_pPropertyBegin, m_pfnGetInterface
[line: 2025]
介绍unshare.h与unshare.cpp文件:
文件中包含了一些在编程中需要使用到的类,这里官方做了整理。直接调用便可。
额外需要注意的地方 [line:2992]
三叶资源网 评论于 [2019-01-09 00:15:18]
支持库编写第六课:
编写一个“按钮”:
复习上一课:
通过支持库接口创建一个按钮,按钮应该继承自基类: CButton [line:2994]
重要的类:
class CPIButton : public CPropertyInfo
属性类。 用来保存所有的组件相关的属性。 继承自 CPropertyInfo
需要实现: Init 初始化方法
需要实现: Serialize 用于在运行时应用属性
#define ITF_CREATE_UNIT 1 // 创建单元
实现Create创建,用于创建窗口。
-----------------------------------------------------------------------------
分别实现对应的“接口(GetInterface)”方法:[line: 2480]
#define ITF_CREATE_UNIT 1 // 创建单元
// 下面两个接口仅在可视化设计窗口界面时使用。
#define ITF_PROPERTY_UPDATE_UI 2 // 说明属性目前可否被修改
#define ITF_DLG_INIT_CUSTOMIZE_DATA 3 // 使用对话框设置自定义数据
#define ITF_NOTIFY_PROPERTY_CHANGED 4 // 通知某属性数据被修改
#define ITF_GET_ALL_PROPERTY_DATA 5 // 取全部属性数据
#define ITF_GET_PROPERTY_DATA 6 // 取某属性数据
首先实现窗口的一些属性。
窗口属性的定义:
如果需要定义窗口的属性,则需要给m_nPropertyCount,m_pPropertyBegin赋值;
需要注意的地方是:在属性m_pPropertyBegin定义的最前面必须使用:FIXED_WIN_UNIT_PROPERTY([line:34
三叶资源网 评论于 [2019-01-09 00:15:31]
持库编写第七课:
窗口组件的方法:
组件方法类似于自定义数据类型的方法,使用默认的定义即可。
编写方法的实现代码时要注意,此时第一个参数始终为指向其所在数据类型的对象指针
在方法中获取窗口类型指针。
{
GetWndPtr (pArgInf);
}
-----------------------
窗口组件的事件:
需要实现窗口组件的事件,首先需要定义事件、事件参数等。
EVENT_INFO : [line:2419]
EVENT_INFO2 : [line:2444]
-
EVENT_ARG_INFO : [line:2397]
EVENT_ARG_INFO2 : [line:2413]
事件定义完毕后,将会在易语言设计界面中看到对应的事件,并且可以看到参数值等。
-
触发窗口事件: [line:2917]
时间的触发,需要使用:EVENT_NOTIFY : [line:2926] 或 EVENT_NOTIFY2:[line:2945],来作为通知(NotifySys-NRS_EVENT_NOTIFY)的参数。
----------------------------------------------------------------------
更多内容请看代码。
易语言资源网站 评论于 [2019-03-19 13:12:06]
易语言+调用+.h
易语言源码大全 评论于 [2019-04-06 10:05:50]
易语言制作支持库带属性
易语言子程序 评论于 [2019-05-25 23:12:50]
C语言支持库开发
易语言 评论于 [2020-04-17 22:04:33]
C语言支持库编写第八课
用c语言写易语言Linux库,C语言编写支持库教程相关推荐
- c语言写易语言支持库6,易语言编写支持库
========== 1.易支持库机制 ========== !!!易支持库的库信息.命令信息等等均使用某个结构储存 !!!易源码中的自定义数据类型.类模块.组件即为支持库中的库定义数据类型 !!!易 ...
- python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!
编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...
- python是c语言写的吗-Python与C语言有什么区别?
答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...
- linux环境c语言编程 蔡晋,Linux环境C语言编程
Linux环境C语言编程第1讲linux系统环境介绍 Linux环境C语言编程第2讲命令行解析+环境变量+gcc基本参数 Linux环境C语言编程第3讲共享库.gdb的使用 Linux环境C语言编程第 ...
- python是c语言写的吗-python是c语言开发的吗
python是c语言开发的吗? python是c语言开发的. Python是完全面向对象的语言.函数.模块.数字.字符串都是对象.并且完全支持继承.重载.派生.多重继承,有益于增强源代码的复用性.Py ...
- linux设置多语言环境,怎么为Linux系统配置多语言环境?
这篇文章主要讲述了怎么为Linux系统配置多语言环境的基本方法,其中还包括编码的修改方法,我们就拿用户使用最多的Ubuntu和CentOS这两个为例子吧.需要的朋友可以参考下. 修改 /etc/sys ...
- linux脚本语言求累加和,Linux Shell脚本语言与数学表达式
当你理解了Shell脚本,每当需要时都能流畅编写时,那种感觉很爽的.本章中,我们将教你用脚本语言进行比较复杂的数学运算. 让我们从斐波那契数列开始吧. 斐波那契数列,又称黄金分割数列,指的是这样一个数 ...
- python是c语言写的吗-python和C语言的差别
之前在公司一直做的是C语言的开发,然后做的都是业务方面的东西,做的是sdk,因为最近在找工作,然后今天面试的时候被问到C语言和Python的区别,自己只是简单的说了C是静态语言,在变量在使用前进行声明 ...
- 用C语言写PHP扩展 linux
1:预定义 在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def 内容是你希望定义的函数名以及参数: int a(int x,int y) string b(stri ...
- linux下c语言编程书籍6,Linux下C语言编程-6.pdf
永远的下语言编程基础知识 页码, 首页编程技术正文 L inux下C语言编程 - -基础知识 作者 前言 这篇文章介绍在下进行语言编程所需要的基础知识在这篇文章当中我们将会学 内容 源程序编译 的编写 ...
最新文章
- 一台支持vlan管理的交换机_关于交换机的VLAN技术你了解多少?
- npm 装包时的区别 -D -S
- 1 计算机主机里面都有些什么东西,电脑主机箱里头的东西都有什么用?
- java 圆桌_约瑟夫问题求解释(圆桌问题)Java
- 使用Qt Assistant
- css --- 行内框和内容区
- 世界是沙粒还是宇宙_看到一个沙粒世界:再一次你好世界
- idea 新建springboot 的 web 项目
- JavaSE——数组基础(创建格式、下标、获取长度、常见问题、多维数组)
- 37. 反转一个3位整数 Java
- C语言头文件#includestdlib.h的作用
- Git Your branch is ahead of ‘origin/master‘ by X commits解决方法
- 计算机网络—物理层(思维导图)
- 别人工作2年半跳槽面试阿里,成功拿到offer,为什么你不可以?
- HP常用函数总结(一):
- 搭建个人论坛网站图文教程
- JavaWeb相关知识和技巧概括
- html图片的边框属性,css3:border-image边框图像详解
- php notice undefined offset,PHP 使用数组 疯狂提示 Notice: Undefined offset
- wifi底层学习之路:二,无线配置管理服务cfg80211
热门文章
- matlab 读取mp3文件,MATLAB音频文件读取
- js获取chrome浏览器版本信息
- STM32+MFRC522完成IC卡号读取、密码修改、数据读写
- python批量检索文献pubmed_推荐一个检索文献强大的浏览器插件(Pubmed plus)
- 【arduino从入门到放肆】②arduino IDE下载与安装
- 计算机一级基础知识理论,计算机一级考试理论试题 第6部分 信息与计算机基础知识...
- tensorflow下载mnist数据集
- c语言循环语句实例解释,c语言循环语句(c语言循环语句实例)
- Flymcu烧录出错
- 解决markdown快捷键在输入法和chrome浏览器下的冲突问题