我使用NPAPI创建了一个safari插件,我想在我的插件中添加一个NSView。
当我尝试获取NPWindow抛出函数 NPP_SetWindow(NPP实例,NPWindow *窗口)时,第二个参数为nil。
我认为我的插件没有窗口,但我不知道如何创建窗口。
答案 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的一部分,它只在该事件的上下文中有效。