先继承nsPluginInstanceBase类,实现其中的虚函数NPBool init(NPWindow* pNPWindow),void shut(),NPBool isInitialized()这几个函数,
并实现几个全局函数:
NPError NS_PluginInitialize()
{
return NPERR_NO_ERROR;
}
此函数是在np_entry.cpp中的
NPError OSCALL NP_Initialize(NPNetscapeFuncs* aNPNFuncs)
{
NPError rv = fillNetscapeFunctionTable(aNPNFuncs);
if (rv != NPERR_NO_ERROR)
return rv;
return NS_PluginInitialize();
}
调用到,而NP_Initialize必须为对外的接口,它将先填充netscape的所有函数接口,并调用我们所写插件类中的全局NS_PluginInitialize()函数。
void NS_PluginShutdown()
{
}
nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
{
if(!aCreateDataStruct)
return NULL;
CPlugin * plugin = new CPlugin(aCreateDataStruct->instance);
return plugin;
}
void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
{
if(aPlugin)
delete (CPlugin *)aPlugin;
}