NPAPI插件开发详细记录:实用功能——改变插件窗口大小

16 篇文章 0 订阅
13 篇文章 0 订阅

我们有时候需要调整插件窗口的尺寸大小,比如说,当你创建一个视频播放窗口,在用户点击播放之后想要将窗口的大小调整为视频的实际大小。播放完毕之后又将窗口尺寸调整回原来的尺寸大小。

要实现这样一个功能,最简单的方式是写JS来实现,只需要首先用getElementById获取插件,然后设置其width属性和height属性。但是,通常情况下我们只管编写插件,不负责网页的设计,如果我们设计完一个插件,还要为网页设计人员写一大堆的注意事项,是不是可以说我们的插件写得不太高明呢?

为了能够在插件中更改插件窗口的尺寸。我们需要使用的接口其实很少,为了方便,我们为Plugin类添加一个成员函数ChangSize(int width, int height):函数代码如下:

void Plugin::ChangeSize(int width,int height)
{
   NPObject *pluginObj;
	NPN_GetValue(m_pNPInstance,NPNVPluginElementNPObject,&pluginObj);
	NPIdentifier n_width_id = NPN_GetStringIdentifier("width");
	NPIdentifier n_height_id = NPN_GetStringIdentifier("height");
	NPVariant rval;
//	STRINGZ_TO_NPVARIANT("400",rval);
	INT32_TO_NPVARIANT(width,rval);
	NPN_SetProperty(m_pNPInstance,pluginObj,n_width_id,&rval);
	INT32_TO_NPVARIANT(height,rval);
	NPN_SetProperty(m_pNPInstance,pluginObj,n_height_id,&rval);
}
代码很简单,不多说了,唯一有难点的是NPNVPluginElementNPObject,因为在MDN上没有对NPN_GetValue(m_pNPInstance,NPNVPluginElementNPObject,&pluginObj);得到的NPObject做任何说明,可能老外都认为NPNVPluginElementNPObject这个词就能够完全说明问题吧!

得到了NPObject,然后就为它设置属性,只需要一个函数NPN_SetProperty和一个宏INT32_TO_NPVARIANT或者STRINGZ_TO_NPVARIANT就可以完成属性的设置,这样一来,就改变了插件窗口的尺寸了。

这种方式与JS方式的实质是一样的,只不过将代码在插件中进行了实现,而且不需要借助插件中调用JS代码。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值