菊子曰官方网站

 找回密码
 注册
搜索
查看: 2532|回复: 5

[文档] 2. 插件库的两个必要函数简介 [复制链接]

Rank: 16

菊叶
418381
菊瓣
566390
菊豆
18
最后登录
2019-7-3
注册时间
2010-5-30
主题
272
精华
12
帖子
7813
发表于 2010-3-31 15:14:25 |显示全部楼层
分享到:
温馨提示:请一边参考菊子曰文件夹里头的 Plugin\Source.zip 代码。

在每个插件里,除了该插件提供的特别功能函数之外,有两个特别的函数是必须实现的:

1. function DescribePlugin: TCSPluginRec; stdcall;

这个函数主要是让菊子曰将插件的一些信息显示给用户知道,比如:
  • 这个插件的功能介绍
  • 开发作者
  • 网站
  • 插件版本
返回值是一个 TCSPluginRec 结构:

  TCSPluginRec = record
    Description: PChar; // 最多 100 个字符
    Developer: PChar; // 最多 100 个字符
    WebSite: PChar; // 最多 100 个字符
    Version: PChar; // 最多 30 个字符
  end;

注:Dephi 的 PChar 是相对应于 C 或 C++ 的 null terminated string (null 终结字符串)

2. function RegisterFunctionNames(FunctionIndex: TCSFunctionIndex): TCSFunctionRec; stdcall;

这个函数是向菊子曰注册插件库里头想要提供的函数功能。菊子曰将通过调用这个函数来询问一共有多少个功能函数是要让用户使用的。菊子曰会向这个函数传入一个 TCSFunctionIndex 结构参数:

  TCSFunctionIndex = record
    FunctionType: TCSFunctionType;
    Index: Integer; // 从 0 开始,每次调用递增 1,直到返回的 TCSFunctionRec.Name = nil 为止(表示没有其他相同的函数了)
  end;

而当中的 TCSFunctionInde.FunctionType 是个枚举类:

  TCSFunctionType = (csftTextInsertFunction, csftTextFormatFunction, csftTextPictureFormatFunction, csftPhotoPictureFormatFunction);
  // csftTextInsertFunction - 插入新的 HTML 源代码
  // csftTextFormatFunction - 格式化现有 HTML 源代码
  // csftTextPictureFormatFunction - 处理文章编辑窗口里头的图片效果
  // csftPhotoPictureFormatFunction - 处理图片编辑窗口里头的图片效果


这个函数的返回值是个 TCSFunctionRec 结构:

  TCSFunctionRec = record
    Name: PChar; // 函数名
    DisplayName: PChar; // 显示在工具栏按钮的名称
    Description: PChar; // 显示在工具栏按钮的提示
    PNGImage32: PChar; // 工具栏按钮的 32 x 32 PNG 格式图片
    PNGImage16: PChar; // 工具栏按钮的 16 x 16 PNG 格式图片
    UseLargeImg: Boolean; // 是否显示为 32 x 32 的大按钮,如果 False 则显示为 16 x 16 的小按钮
    ShowDisplayName: Boolean; // 如果 UseLargeImg 为 False 时,是否还要显示按钮上的名称
    GroupID: PChar; // 如果 GroupID <> nil,那么其他有相同 GroupID 的函数将会被放在同样的群组子菜单下
    GroupDisplayName: PChar; // 显示在工具栏群组按钮的名称 - 只需要在第一个相同群组的函数返回值里设,接下来的都不需要再设这个值了
    GroupDescription: PChar; // 显示在工具栏群组按钮的提示 -  只需要在第一个相同群组的函数返回值里设,接下来的都不需要再设这个值了
    GroupPNGImage32: PChar; // 工具栏群组按钮的 32 x 32 PNG 格式图片 -  只需要在第一个相同群组的函数返回值里设,接下来的都不需要再设这个值了
    GroupPNGImage16: PChar; // 工具栏群组按钮的 16 x 16 PNG 格式图片 -  只需要在第一个相同群组的函数返回值里设,接下来的都不需要再设这个值了
    Version: Integer; // 目前只需要返回 1
  end;

比如,当菊子曰开始调用 RegisterFunctionNames 函数时,会先传入 csftTextInsertFunction 和 0,这时候,你可以开始返回插件库里头的 “插入新的 HTML 源代码” 相关的第一个函数,接着菊子曰会以 csftTextInsertFunction 和 1 继续调用 RegisterFunctionNames,让插件库里头的第二个 “插入新的 HTML 源代码” 相关函数返回,直到最后一次调用之后,如果没有其他的 csftTextInsertFunction 函数类型时,你就可以将 TCSFunctionRec.Name 设为 nil 来返回。

接着,菊子曰就会以 csftTextFormatFunction 和 0 继续调用 RegisterFunctionName,以让插件库返回 csftTextFormatFunction 类型的函数,直到最后的 csftPhotoPictureFormatFunction 为止。

Rank: 2Rank: 2

菊叶
287
菊瓣
125
菊豆
0
最后登录
2015-8-12
注册时间
2010-1-4
主题
1
精华
0
帖子
70
发表于 2010-9-10 23:22:21 |显示全部楼层
学习一下……

使用道具 举报

Rank: 2Rank: 2

菊叶
130
菊瓣
951
菊豆
0
最后登录
2012-10-11
注册时间
2010-1-13
主题
2
精华
0
帖子
27
发表于 2011-2-27 09:40:02 |显示全部楼层
开放的不是很多啊

使用道具 举报

Rank: 16

菊叶
418381
菊瓣
566390
菊豆
18
最后登录
2019-7-3
注册时间
2010-5-30
主题
272
精华
12
帖子
7813
发表于 2011-2-27 10:26:26 |显示全部楼层
回复 李项 的帖子


    你还需要什么接口?
学会关上大门

使用道具 举报

Rank: 2Rank: 2

菊叶
130
菊瓣
951
菊豆
0
最后登录
2012-10-11
注册时间
2010-1-13
主题
2
精华
0
帖子
27
发表于 2011-2-27 10:45:14 |显示全部楼层
不是太懂 我只是觉得现在的插件函数 只是增强编辑功能 如果能加上用户互动功能就好了

使用道具 举报

Rank: 16

菊叶
418381
菊瓣
566390
菊豆
18
最后登录
2019-7-3
注册时间
2010-5-30
主题
272
精华
12
帖子
7813
发表于 2011-2-27 10:46:45 |显示全部楼层
回复 李项 的帖子


    所以我需要知道你所指的互动式怎么个互动法?不然我也不知道你会需要什么样的接口。
学会关上大门

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐

再见了,菊子曰的朋友们
再见了,菊子曰的朋友们
由于经营不善,我们决定解散菊子曰开发团队,并且从即日起不再更新菊子曰了

查看 »

菊子曰 ( 闽ICP备12013319号 )

GMT+8, 2019-7-20 19:52 , Processed in 0.017556 second(s), 6 queries , Apc On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部