很多人都很疑惑为什么参照CEF官网的例程来,然后也实现了 OnContextCreated 接口但是没有被调用,原因很简单,在头文件里面加上一段:
// CefApp methods:
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler()
OVERRIDE {
return this;
}
如果要调试的话附加到渲染Render的线程上就好了。这个问题真的很傻…搜了半天没找到想要的答案,然后自己重写的时候发现其实问题的根本就是人太傻了。
贴一个完整的头文件:
class MyApp: public CefApp, public CefBrowserProcessHandler, public CefRenderProcessHandler {
public:
MyApp();
// CefApp methods:
virtual CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler()
OVERRIDE {
return this;
}
// CefApp methods:
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler()
OVERRIDE {
return this;
}
// CefBrowserProcessHandler methods:
virtual void OnContextInitialized() OVERRIDE;
virtual void OnContextCreated(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context) OVERRIDE;
private:
// Include the default reference counting implementation.
IMPLEMENT_REFCOUNTING(MyApp);
};
本文介绍了在实现CEF(Chromium Embedded Framework)时遇到的一个常见问题,即OnContextCreated接口未被调用。原因在于没有正确重写GetRenderProcessHandler方法。通过在头文件中添加相应代码并附加到渲染线程进行调试,可以解决此问题。提供了一个完整的MyApp类头文件示例,展示了如何正确实现。
2104

被折叠的 条评论
为什么被折叠?



