- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《易语言支持库编写方法》
海洋 2004年3月
特别说明:如果你手头上还没有《易语言支持库开发技术文档》的话,请到/download.asp下载。
学习本教材需要安装VC++6.0以上版本编程环境。
目 录
第一课 支持库框架文档分析 2
一、从LIB_INFO开始 2
二、属性 4
三、事件 5
四、对外接口 5
五、所属命令 6
第二课 我的第一个支持库 8
一.准备工作 8
二.最简单的支持库 8
三.今天的收获 11
第三课 充实与完善 12
一.常量 12
二.自定义数据类型 13
三.全局命令 15
四.总结 17
第四课 窗口单元初步 18
一.窗口单元的实质 18
二.数据类型 19
三.CMyHotKey 20
四.一些小问题 22
第五课 窗口单元终结篇 22
一.位置和大小 23
二.边框 24
三.取出热键框的内容 25
四.关于事件 25
此文章版权归袁晓辉所有,如需转载请注明:
作者姓名:袁晓辉
出处:
第一课 支持库框架文档分析
易语言的一个非常显著的特点就是其支持库可以随意增减(当然系统核心支持库除外),这不仅为易语言开发团队升级软件提供了极大的方便,也使得易语言具有了理论上无限的扩展性。同时也给那些有能力且愿意为易语言的发展添砖加瓦的易友们提供了一个广阔的施展空间。
易语言支持库的编写其实并不难,只要有一定的VC++编程基础,再下一点功夫任何人都可以写的!下面是我学习编写支持库的一些心得体会,现在拿出来和大家分享。
一、从LIB_INFO开始
学习写易语言的支持库,最好的参考资料就是易语言作者提供的“超文本浏览框”支持库的源代码(到易语言网站下载)。那么我们首先大体浏览一下这个源代码,对支持库编写的大体框架有个了解。
打开“超文本浏览框”支持库的源代码,我们发现它实际上就是一个VC++编写的静态链接了MFC的Dll工程,从CwinApp继承来的ChtmlViewApp类就是这个Dll的主类,HtmlView.def文件提供了该Dll的对外接口――GetNewInf()函数。
我们就从这个函数开始研究,在FileView中打开HtmlView.def文件,把光标放到该函数名内部,按F12(或在Browse工具条上点“Go to Definition”)找到它的定义,在HtmlView.cpp文件中。但我们发现这个函数并没有做太多的事情,只是简单地返回了一个static 变量s_LibInfo的指针。其实就是这个LIB_INFO类型的结构变量包含了该支持库的一切对外(这里的外实际上就是易语言的编程环境和易语言程序)信息。用同样的方法我们找到s_LibInfo的定义:
//////////// 库定义开始
static LIB_INFO s_LibInfo =
{
/*Lib Format Ver*/ LIB_FORMAT_VER, // 保留未用。
// 本支持库的GUID串:
// guid: {5014D8FA-6DCA-40b6-8FA6-26D8183666EB}
#define LI_LIB_GUID_STR 5014D8FA6DCA40b68FA626D8183666EB
/*guid str*/ _T (LI_LIB_GUID_STR),
/*m_nMajorVersion*/ 1,
/*m_nMinorVersion*/ 1,
……
……
}
这是一个看似非常复杂的结构体,但实际上对我们有用的信息却不是很多,所以不用担心。可以看得出,前半部分只是一些支持库名称,支持语言,作者信息等说明性的文字,只到这里才有真正有用的信息:
/*m_nDataTypeCount*/ sizeof (s_DataType) / sizeof (s_DataType[0]),
/*m_pDataType*/ s_DataType,
这两行实际上定义了该支持库中唯一的库定义数据类型——“超文本浏览框”。用过易语言的都知道它是一个窗口单元,我们一步步来看它是如何定义的。我们找到s_DataType的定义,发现它是一个数组,只有一个LIB_DATA_TYPE_INFO类型的成员(肯定只有一个啦,因为该支持库就只有“超文本浏览框”这一个数据类型了。到这里我们也同时明白了上面第一行计算出了这个数组的成员数,作为数据类型个数):
static LIB_DATA_TYPE_INFO s_DataType[] =
{
{
/*m_szName*/ _WT(超文本浏览框),
/*m_szEgName*/ _WT(HtmlViewer),
/*m_szExplain*/ _WT(提供对HTML页面的浏览支持),
/*m_nCmdCount*/ sizeof (s_nHt
文档评论(0)