【问题标题】:sample mac Firefox Plugins?示例 mac Firefox 插件?
【发布时间】:2010-02-18 19:53:52
【问题描述】:

我正在尝试为 mac 重写一个旧的图像查看插件。旧版本使用 QuickDraw(我说它很旧)和资源(真的很旧),所以它在 Firefox 3.6 中不起作用(这就是我重新编写它的原因)

我知道一些 Objective C,所以我想我将使用新的 Mac 例程和 nib 等重新编写它。但是,我不知道如何开始。我有 mozilla 源附带的 BasicPlugin 示例,所以我知道如何使用入口点等创建插件。但是,我不知道如何创建 nib,以及如何将 Obj-C 与入口点连接,等等

有谁知道比 BasicPlugin.bundle 更高级的 mac 示例? (最好足够简单,我可以看看它并理解它......)

谢谢。

【问题讨论】:

    标签: objective-c macos npapi browser-plugin


    【解决方案1】:

    遗憾的是,我真的不知道有什么好的 “中级” 例子。然而,集成 Obj-C 并不难。因此,以下是需要做什么的简短概述。

    您可以在同一个项目中使用 Obj-C 和 C/C++ 源,只是建议在一定程度上将它们分开。例如,这可以通过让带有入口点和其他 NPAPI 接口的源文件保持纯 C 或 C++ 文件来完成,例如从那里将呼叫转发到插件中。
    Opaque pointers 有助于保持干净的分离,请参阅例如here.

    插件的主要变化包括切换到不同的绘图和事件模型。这些必须在NPP_New() 中协商,here 是绘图模型的示例。使用 Cocoa 并支持 64 位环境时,需要使用Cocoa event model

    要绘制 UI 元素,您应该能够使用 NSGraphicsContext from the CGContextRef,然后绘制 NSView in the context。另请参阅this post 中提供的详细信息及其后续内容。

    【讨论】:

    • 实际上我的主要问题(目前)是将笔尖集成到项目中。特别是,如何将 NSView 放入我的插件空间...我有 NPAPI 的东西,如果需要的话,一个简单的 extern "C" 应该可以处理任何事情...
    • MacOSX 上没有子窗口,因此您无法将 NSView 附加到任何内容。为什么不能直接绘制到你得到的上下文中?
    • 但是我如何获得按钮、滚动条等?我认为我得到的上下文是 Quartz/Carbon 上下文,但我不认为这是支持的,因此,我有点困惑......或者,我不知道如何进入上下文...... .
    • NPAPI 在这里只保证您可以在窗口中的特定上下文中绘制 - 获得完整的视图是特定于浏览器的,即使对于不同的版本也必然会失败。至于如何使用它来绘制 UI 元素 - 好问题,我还不需要这样做。如果我偶然发现一些东西,我会更新。
    • MDC 在某些方面已经过时了——看看这里——wiki.mozilla.org/…。还要让自己获得最新的标题,然后看看那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多