首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npWindow->窗口在NPP_SetWindow函数中给出0的值,这是Mac上Safari浏览器的插件。

npWindow->窗口在NPP_SetWindow函数中给出0的值,这是Mac上Safari浏览器的插件。
EN

Stack Overflow用户
提问于 2015-10-25 17:18:45
回答 1查看 108关注 0票数 1

一个插件,在windows上的firefox中运行良好,现在正在Mac上移植到safari上。我们正在使用Xcode进行开发。我们希望在safari浏览器中有一个可以显示视频的窗口。我阅读了关于NSwindow在NPP_SetWindow函数中使用的代码,如下所示:

代码语言:javascript
复制
NPError NPP_SetWindow(NPP instance, NPWindow* npWindow)
{
// Get a Cocoa window reference of the browser window
NP_CGContext* npContext = (NP_CGContext*)npWindow->window;
WindowRef window = npContext->window;
NSWindow* browserWindow = [[[NSWindow alloc] initWithWindowRef:window] autorelease];

// Get a Cocoa reference of my carbon window
// yourCarbonWindow should be replaced with the window handle of the carbon
// window that should be tied to the Safari window.
NSWindow* myWindow = [[[NSWindow alloc] initWithWindowRef:yourCarbonWindow] autorelease];

// Now create a parent child relationship
[browserWindow addChildWindow:myWindow ordered:NSWindowAbove];
}

但问题是npWindow->窗口没有任何值。当使用printf检查时,它会显示0值,这意味着它没有被初始化或空。

但在Firefox中,它带来了一些价值。谁能告诉我如何在Safari中获得NSWindow,或者哪里可能有问题?碳窗口的概念是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 14:02:29

现在版本的Safari不支持Carbon事件模型(这是您的代码片段所使用的),只有可可事件模型,并且根据文档,该事件模型中的window ref为null。

直接使用窗口一直是NPAPI插件(至少在Mac上)的反模式(至少在Mac上),使用64位和进程外的插件就变得不可能了;NSWindow不在插件的进程中,因此您无法获得指向它的指针。您应该绘制到API所建立的上下文或层(取决于您的绘图模型),而不是试图显示您自己的子窗口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33332608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档