欢迎来到天天文库
浏览记录
ID:27187004
大小:430.50 KB
页数:25页
时间:2018-12-01
《易语言支持库编写剖析.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、学习本教材需要安装VC++6.0以上版本编程环境。《易语言支持库编写方法》目录第一课支持库框架文档分析2一、从LIB_INFO开始2二、属性4三、事件5四、对外接口5五、所属命令6第二课我的第一个支持库8一.准备工作8二.最简单的支持库8三.今天的收获11第三课充实与完善12一.常量12二.自定义数据类型13三.全局命令15四.总结17第四课窗口单元初步18一.窗口单元的实质18二.数据类型19三.CMyHotKey20四.一些小问题22第五课窗口单元终结篇22一.位置和大小23二.边框24三.取出热键框的内容25四.关于事件25此文章版权归袁晓辉所有,如需转
2、载请注明:作者姓名:袁晓辉出处:www.dywt.com.cn第一课支持库框架文档分析易语言的一个非常显著的特点就是其支持库可以随意增减(当然系统核心支持库除外),这不仅为易语言开发团队升级软件提供了极大的方便,也使得易语言具有了理论上无限的扩展性。同时也给那些有能力且愿意为易语言的发展添砖加瓦的易友们提供了一个广阔的施展空间。易语言支持库的编写其实并不难,只要有一定的VC++编程基础,再下一点功夫任何人都可以写的!下面是我学习编写支持库的一些心得体会,现在拿出来和大家分享。一、从LIB_INFO开始学习写易语言的支持库,最好的参考资料就是易语言作者提供的“超
3、文本浏览框”支持库的源代码(到易语言网站下载)。那么我们首先大体浏览一下这个源代码,对支持库编写的大体框架有个了解。打开“超文本浏览框”支持库的源代码,我们发现它实际上就是一个VC++编写的静态链接了MFC的Dll工程,从CwinApp继承来的ChtmlViewApp类就是这个Dll的主类,HtmlView.def文件提供了该Dll的对外接口――GetNewInf()函数。我们就从这个函数开始研究,在FileView中打开HtmlView.def文件,把光标放到该函数名内部,按F12(或在Browse工具条上点“GotoDefinition”)找到它的定义,在
4、HtmlView.cpp文件中。但我们发现这个函数并没有做太多的事情,只是简单地返回了一个static变量s_LibInfo的指针。其实就是这个LIB_INFO类型的结构变量包含了该支持库的一切对外(这里的外实际上就是易语言的编程环境和易语言程序)信息。用同样的方法我们找到s_LibInfo的定义:////////////库定义开始staticLIB_INFOs_LibInfo={/*LibFormatVer*/LIB_FORMAT_VER,//保留未用。//本支持库的GUID串://guid:{5014D8FA-6DCA-40b6-8FA6-26D81836
5、66EB}#defineLI_LIB_GUID_STR"5014D8FA6DCA40b68FA626D8183666EB"/*guidstr*/_T(LI_LIB_GUID_STR),/*m_nMajorVersion*/1,/*m_nMinorVersion*/1,…………}这是一个看似非常复杂的结构体,但实际上对我们有用的信息却不是很多,所以不用担心。可以看得出,前半部分只是一些支持库名称,支持语言,作者信息等说明性的文字,只到这里才有真正有用的信息:/*m_nDataTypeCount*/sizeof(s_DataType)/sizeof(s_DataT
6、ype[0]),/*m_pDataType*/s_DataType,这两行实际上定义了该支持库中唯一的库定义数据类型——“超文本浏览框”。用过易语言的都知道它是一个窗口单元,我们一步步来看它是如何定义的。我们找到s_DataType的定义,发现它是一个数组,只有一个LIB_DATA_TYPE_INFO类型的成员(肯定只有一个啦,因为该支持库就只有“超文本浏览框”这一个数据类型了。到这里我们也同时明白了上面第一行计算出了这个数组的成员数,作为数据类型个数):staticLIB_DATA_TYPE_INFOs_DataType[]={{/*m_szName*/_W
7、T("超文本浏览框"),/*m_szEgName*/_WT("HtmlViewer"),/*m_szExplain*/_WT("提供对HTML页面的浏览支持"),/*m_nCmdCount*/sizeof(s_nHtmlViewerElementCmdIndex)/sizeof(s_nHtmlViewerElementCmdIndex[0]),/*m_pnCmdsIndex*/s_nHtmlViewerElementCmdIndex,/*m_dwState*/LDT_WIN_UNIT,/*m_dwUnitBmpID*/IDB_HTMLVIEWER_BITMAP
8、,//事件/*m_nEventCoun
此文档下载收益归作者所有