0

是否可以从 C++ XPCOM 附加组件中提取元素?以前(可能很久以前)可以获取 nsIDOMCanvasRenderingContext2D 接口的对象并使用 ti 的方法 PutImageData_explicit 在画布上绘制图像。如今,nsIDOMCanvasRenderingContext2D 隐藏了所有内容,我不知道如何实现这一点。

一般来说 - 有没有办法通过网页上的附加组件来呈现视频(比如说从远程主机获得)?

任何建议将被认真考虑。谢谢

4

1 回答 1

0

现在有PutImageData_explicit。但这是一个受保护的成员。

  • 您可能会为了您的目的欺骗系统并破坏封装,例如通过派生和向下转换(现在受保护的成员都是您的)。
  • 或者以艰难的方式去做,并PutImageData在不得不乱用ImageDataand的情况下使用ErrorResult

向下转换以获取受保护的成员:

#include <string>
#include <iostream>

class Base {
  protected:
    std::string myName() {
      return "Base";
    }
};
class Derived : public Base {
  public:
    std::string myName() {
      return Base::myName();
    }
};

int main() {
  Base *base = new Base();
  Derived* derived = static_cast<Derived*>(base);
  std::cout << derived->myName() << std::endl;
  delete base;
  return 0;
}

PS:这行得通,因为这仍然适用sizeof(Base) == sizeof(Derived)。您真的不想修改大小,例如通过添加数据成员等,除非您是段错误和堆损坏的粉丝;)

于 2013-08-21T21:32:01.450 回答