ICAPlugin 接口

// {74074DD7-051D-4941-88D1-3E29D793A642}
const GUID IID_ICAPlugin = 
{ 0x74074dd7, 0x51d, 0x4941, { 0x88, 0xd1, 0x3e, 0x29, 0xd7, 0x93, 0xa6, 0x42 } };

interface ICAPlugin: public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Init(ICAApp* pApp) = 0;
    virtual HRESULT STDMETHODCALLTYPE Exit() = 0;
    virtual HRESULT STDMETHODCALLTYPE get_Flags(long* pnFlags) = 0;
    virtual HRESULT STDMETHODCALLTYPE put_Flags(long nFlags) = 0;
    virtual HRESULT STDMETHODCALLTYPE get_MenuItemText(BSTR* pbstrDescription) = 0;
    virtual HRESULT STDMETHODCALLTYPE get_MenuItemStatus(long* pnStatus) = 0;
    virtual HRESULT STDMETHODCALLTYPE get_MenuItemOrder(long* pnMenuItemOrder) = 0;
    virtual HRESULT STDMETHODCALLTYPE Execute() = 0;
};

Init(ICAApp* pApp)

说明

CyberArticle在启动的时候,会调用这个方法。传入ICAApp对象。插件应该在这个方法内,进行一些初始化操作。

参数

  • ICAApp:[in],ICAApp对象。插件可以使用这个对象,用来获得CyberArticle信息。具体请查看ICAApp接口。

返回

  • S_OK:如果插件初始化成功,应该返回S_OK。
  • E_FAIL:如果插件初始化成功,应该返回E_FAIL。

Exit()

说明

CyberArticle在退出的时候,会调用这个方法。插件应该在这个方法内,完成一些清理工作。

参数

  • ICAApp:[in],ICAApp对象。插件可以使用这个对象,用来获得CyberArticle信息。具体请查看ICAApp接口。

返回

插件应该返回S_OK。

get_Flags(long* pnFlags)

说明

该方法返回插件的信息。CyberArticle会调用这个方法,来获取插件信息。

参数

  • pnFlags:[out]。返回插件的信息。可以返回一个或者多个下面的值:
    CAPLUGIN_FLAG_TYPE_NODES_TOOL 
    0x00000001
    表示这是一个处理节点的插件。CyberArticle将会在节点右键菜单中,显示插件菜单,供用户选择。
    CAPLUGIN_FLAG_TYPE_EDIT_TOOL
    0x00000002
    表示这是一个用来编辑文章的插件。CyberArticle将会在文章编辑窗口中,显示这个插件。如果具有这个属性,用户的COM组件,必须同时实现另外一个接口:ICAEditPlugin
    CAPLUGIN_FLAG_TYPE_NORMAL_TOOL
    0x00000004
    表示这是一个普通的工具插件,CyberArticle将会在主菜单的工具菜单下面,显示插件菜单,供用户选择。
    CAPLUGIN_FLAG_TYPE_IMPORT_TOOL
    0x00000008
    表示这可能是一个用来实现某些导入功能的插件,CyberArticle将会在主菜单->文件->导入菜单下面,显示插件菜单,供用户选择。
    CAPLUGIN_FLAG_TYPE_EXPORT_TOOL
    0x00000010
    表示这可能是一个用来实现某些导出功能的插件,CyberArticle将会在主菜单->文件->导出菜单下面,显示插件菜单,供用户选择。
    CAPLUGIN_FLAG_TYPE_EDIT_FORMAT_TOOL
    0x00000020
    这是一个用来编辑插件文章的,插件菜单,将会显示在CyberArticle编辑文章窗口的主菜单->格式菜单下面。
    CAPLUGIN_FLAG_TYPE_EDIT_INSERT_TOOL
    0x00000040
    这是一个用来编辑插件文章的,插件菜单,将会显示在CyberArticle编辑文章窗口的主菜单->插入菜单下面。
    CAPLUGIN_FLAG_TYPE_NEW_ARTICLE_TOOL
    0x00000080
    这是一个用来新建文章的插件。插件菜单,将会显示在CyberArticle主菜单->文件->新建 菜单下面。
    CAPLUGIN_FLAG_TYPE_EDIT_PROPERTIES_TOOL
    0x00000100
    这是一个用来编辑文章的插件,插件菜单,将会显示在CyberArticle编辑文章窗口的主菜单->格式菜单下面,同时显示在CyberArticle编辑文章窗口的右键菜单中。
    CAPLUGIN_FLAG_TYPE_BOOK_TOOL
    0x00000200
    表示这是一个用来处理书籍的插件。CyberArticle将会在书籍右键菜单中,显示插件菜单,供用户选择。
    CAPLUGIN_FLAG_MENU_BEGIN_GROUP
    0x00010000
    在插件菜单上面显示一个分割线,表明这个插件菜单和其它的插件功能不同。

返回

插件应该返回S_OK。

注意

这里的导入/导出插件,并不是CyberArticle三种插件类型里面的导入/导出插件。
插件包含CAPLUGIN_FLAG_TYPE_IMPORT_TOOL / CAPLUGIN_FLAG_TYPE_EXPORT_TOOL这两个属性,紧紧是为了给插件进行分类,用来决定插件菜单的显示位置。例如导入/导出CHM文件的插件,并不是CyberArticle导入/导出插件,他们仍然是CyberArticle普通插件,实现的接口,也是ICAPlugin


put_Flags(long nFlags)

说明

CyberArticle会调用这个方法,设置一些信息。nFlags的值,和get_Flags方法返回的值相同。

参数

  • nFlags:[in],可能的值同get_Flags

返回

插件应该返回S_OK。

get_MenuItemText(BSTR* pbstrDescription) 

说明

用来返回插件菜单文字。CyberArticle会调用这个方法,来获得插件菜单文字。

参数

  • pbstrDescription:[out]。返回插件菜单文字。

返回

插件应该返回S_OK。

get_MenuItemStatus(long* pnStatus)

说明

用来返回菜单状态。CyberArticle会调用这个方法,来更新菜单状态。

参数

  • pnStatus:[out]。用来返回菜单状态。返回值是一个整数,可以具有一个或者多个下面的值。
    CAPLUGIN_MIS_ENABLED
    0x00000000L
    菜单有效,可以选择
    CAPLUGIN_MIS_UNCHECKED
    0x00000000L
    菜单没有被选中
    CAPLUGIN_MIS_DISABLED
    0x00000001L
    菜单无效(灰色),不能被选中
    CAPLUGIN_MIS_CHECKED
    0x00000002L
    菜单被选中,前面有一个对号。

返回

插件应该返回S_OK。

get_MenuItemOrder(long* pnMenuItemOrder)

说明

用来返回菜单显示顺序。返回一个整数。该整数越小,菜单显示的越靠前。CyberArticle将会调用这个方法,用来给插件菜单排序。

参数

  • pnMenuItemOrder:[out]。返回菜单顺序号码。

返回

插件应该返回S_OK。

Execute()

说明

用户点击插件菜单后,CyberArticle将会调用这个方法,通知插件,执行相应的功能。

参数

返回

插件应该返回S_OK。