Mac OSX、NPAPI中的Cocoa事件模型、NSView和进程外插件
目前chrome有进程外插件。Firefox4将使用相同的型号 这意味着插件过程现在与浏览器过程分离。 插件进程可能根本没有窗口 我的插件基于Mac OSX、NPAPI中的Cocoa事件模型、NSView和进程外插件,cocoa,macos,plugins,model,npapi,Cocoa,Macos,Plugins,Model,Npapi,目前chrome有进程外插件。Firefox4将使用相同的型号 这意味着插件过程现在与浏览器过程分离。 插件进程可能根本没有窗口 我的插件基于NSView 在cocoa事件模型之前,当我可以在浏览器进程中访问NSWindow时,我所要做的就是将我的视图添加为窗口中contentView的子视图 [[the_window contentView] addSubview:my_view] 我不需要自己处理事件。它自己起作用了 但现在,我将npcoacoaevents转换为事件处理代码中的NSEv
NSView
在cocoa事件模型之前,当我可以在浏览器进程中访问NSWindow
时,我所要做的就是将我的视图添加为窗口中contentView的子视图
[[the_window contentView] addSubview:my_view]
我不需要自己处理事件。它自己起作用了
但现在,我将npcoacoaevents
转换为事件处理代码中的NSEvents
我必须自己换吗
还有一些n事件的实例
,我无法生成它们,例如,滚轮鼠标事件
我该怎么办
我走错路了吗
请开导我
我必须自己换吗
如果您计划使用将NSEvents转发到现有NSView的方法,则是;无法访问原始N事件。它们不存在于插件过程中
另一种选择是不再尝试使用本机控件,而是自己进行绘图和事件处理。这是大多数NPAPI插件的工作方式
第三种可能是为插件内容打开一个单独的窗口,并将视图放在该窗口中。NPAPI在技术上不支持这一点,它也不完美,但这可能是一种短期的方法,可以让你的插件在探索长期选项的同时工作
我走错路了吗
是的,您之前所做的是一个不受支持的黑客,而不是NPAPI的用途。将视图添加到浏览器窗口时,浏览器的视图层次结构中的某些内容是实现细节,随时可能发生更改。一个选项是使用框架创建插件,因为它已经有很多用于协商事件和绘图模型的抽象以及事件抽象。起床和出发很简单。谢谢你的回答。这是一个很好的建议。