如何创建一个窗口插件?

时间:2012-09-19 10:12:36

标签: npapi browser-plugin windowless windowed

我使用NPAPI创建了一个safari插件,我想在我的插件中添加一个NSView。

当我尝试获取NPWindow抛出函数 NPP_SetWindow(NPP实例,NPWindow *窗口)时,第二个参数为nil。

我认为我的插件没有窗口,但我不知道如何创建窗口。

1 个答案:

答案 0 :(得分:0)

Mac上的NPAPI不​​支持NSView作为窗口模式。有两种支持的模式:

曾经有过QuickDraw模式,但已弃用。

有关详细信息,请参阅Stuart Morgan's excellent blog post on the subject

可以将NSView渲染到CoreGraphics上下文,但是您必须代理所有事件并且它远非完美。

编辑:为了进一步解释你的问题的答案,窗口参数为NULL的原因(它是一个C api,而不是Obj C,所以它是NULL,不是零...尽管它们同样的事情=])是因为在Cocoa Event Model中你得到一个CGContextRef作为draw event的一部分,它只在该事件的上下文中有效。