很多人都很疑惑为什么参照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);
};