【问题标题】:How to use Thebes classes in latest XULRunner sdk?如何在最新的 XULRunner sdk 中使用 Thebes 类?
【发布时间】:2023-03-23 12:43:01
【问题描述】:

我的 C++ 代码在 XULRunner 7 到 11 个版本中运行良好:

    nsRefPtr<gfxWindowsSurface> targetSurface = new gfxWindowsSurface(hDC, gfxWindowsSurface::FLAG_FOR_PRINTING); 
    nsRefPtr<gfxContext> ctx = new gfxContext(targetSurface);

但是当我尝试用 XULRunner 12 及更高版本编译它时,它会导致链接错误:

error LNK2019: unresolved external symbol "public: __thiscall gfxContext::gfxContext(class gfxASurface *)" (??0gfxContext@@QAE@PAVgfxASurface@@@Z) 
error LNK2019: unresolved external symbol "public: __thiscall gfxWindowsSurface::gfxWindowsSurface(struct HDC__ *,unsigned int)" (??0gfxWindowsSurface@@QAE@PAUHDC__@@I@Z) 

我为 xul.lib 制作了 dumpbin,发现现在没有任何用于 THEBES API 的导出。当 SDK 将版本从 11 更改为 12 时,它们被删除。 是否可以在最新的 xulrunner sdk`s 中使用二进制 XPCOM 中的 gfxWindowsSurface 和 gfxContext?

谢谢,

谢尔盖

【问题讨论】:

    标签: firefox xul xpcom xulrunner


    【解决方案1】:

    相关更改是bug 683891,另请参阅bug 718985 进行扩展讨论。允许第三方直接访问图形代码似乎不再被认为是可取的。所以你的问题的答案是:不,你不能再用股票 XULRunner 做到这一点。因此,您可以寻找替代方法来实现您的目标(例如,更高级别的绘图表面,如 bug 中建议的 &lt;canvas&gt;),或者您可以创建自己的 XULRunner 构建并还原此特定补丁。

    【讨论】:

    • 这不是一个好消息。我真的不明白这些人。 XUL SDK 的发布正在快速运行,API 的变化是零星的和神秘的,文档在古代丢失了,我不知道如何更新本地扩展。
    • @SergeZ:嗯,它是低级的内部 API,你可能一开始就不应该使用......
    • 我的主要任务是通过自己的 HDC 进行渲染以将文档记录到 EMF 中。它在 FF>=11 上运行良好。
    • @SergeZ:如果您需要本机代码来呈现屏幕区域,通常的方法是使用 NPAPI 插件。
    • 它是如何工作的?我需要为 WP_PAINT 使用 NPN_InvalidateRect + NPP_HandleEvent 吗?但是我如何将自己的 HDC 传递到 Firefox 中呢?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多