ICAEditPlugin 接口// {434C6434-6BF4-4913-8D70-09E4E5F349E4} const GUID IID_ICAEditPlugin = { 0x434c6434, 0x6bf4, 0x4913, { 0x8d, 0x70, 0x9, 0xe4, 0xe5, 0xf3, 0x49, 0xe4} }; interface ICAEditPlugin: public IUnknown { virtual HRESULT STDMETHODCALLTYPE put_WebBrowser(IWebBrowser2* pWebBrowser) = 0; virtual HRESULT STDMETHODCALLTYPE put_Book(ICABook* pBook) = 0; virtual HRESULT STDMETHODCALLTYPE put_Node(ICANode* pNode) = 0; }; put_WebBrowser(IWebBrowser2* pWebBrowser)说明通知插件当前正在编辑的文章的浏览器接口。插件可以根据IWebBrowser2对象,操作正在编辑的文章。
参数
返回插件应该返回S_OK。 put_Book(ICABook* pBook)说明通知插件当前正在编辑的文章所在的书籍。 参数
返回插件应该返回S_OK。 put_Node(ICANode* pNode)说明通知插件当前正在编辑的文章。 参数
返回插件应该返回S_OK。 说明CyberArticle在用户点击相应的插件菜单后,会首先向插件设置浏览器信息和正在编辑的文章信息,然后调用ICAPlugin::Execute方法。
CyberArticle内部调用编辑插件的代码如下(示例):
CComPtr<ICAPlugin> spPlugin; // ... ASSERT(spPlugin); // CComQIPtr<ICAEditPlugin> spEditPlugin(spPlugin); //查询ICAEditPlugin接口。如果支持,就将调用相应地方法。 if (spEditPlugin) { spEditPlugin->put_WebBrowser(m_pBrowserApp); //通知插件当前的浏览器接口。 // CCyberArticleEditDoc* pDoc = GetDocument(); if(pDoc) { spEditPlugin->put_Book(pDoc->GetBook()); //通知插件当前正在编辑的书籍 // CComPtr<ICANode> spNode = pDoc->GetNode(); if (spNode) { spEditPlugin->put_Node(spNode); //通知插件当前正在编辑的文章。 //注意,如果没有调用该方法,或者spNode==NULL, //说明正在编辑的文章还没有被保存,没有生成CyberArticle节点。 } } } // //通知插件执行相应的功能 HRESULT hr = spPlugin->Execute(); |
|
|