0

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

当我尝试获取 NPWindow throw function NPP_SetWindow(NPP instance, NPWindow* window)时,第二个参数为 nil。

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

4

1 回答 1

0

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

曾经有一个 QuickDraw 模式,但已被弃用。

有关更多信息,请参阅Stuart Morgan 关于该主题的出色博客文章

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

编辑:为了进一步解释您的问题的答案,window 参数为 NULL 的原因(它是 C api,而不是 Obj C,所以它是 NULL,而不是 nil ......尽管它们是相同的东西 =])是因为在在Cocoa 事件模型中,您将获得一个 CGContextRef 作为绘图事件的一部分,该事件仅在该事件的上下文中有效。

于 2012-09-19T15:17:27.337 回答