nim_duilib/ui_components/cef_control/manager/cef_manager.h

96 lines
2.4 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
/** @file cef_manager.h
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD>
* @copyright (c) 2016, NetEase Inc. All rights reserved
* @author Redrain
* @date 2016/7/19
*/
#pragma once
#include "include/cef_app.h"
namespace nim_comp
2019-04-19 17:19:57 +08:00
{
/** @class CefMessageLoopDispatcher
* @brief <EFBFBD><EFBFBD>multi_threaded_message_loopΪfalseʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
* <EFBFBD><EFBFBD>Ŀ<EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD>޷<EFBFBD>ʹ<EFBFBD><EFBFBD>cef<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>CefRunMessageLoop<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* CefMessageLoopDispatcher<EFBFBD>̳<EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ƚӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĵ<EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD>CefDoMessageLoopWork<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>multi_threaded_message_loopΪtrueʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>
*/
class CefMessageLoopDispatcher : public nbase::Dispatcher
{
public:
virtual bool Dispatch(const MSG &message) override;
private:
// <20>жϵ<D0B6>ǰҪ<C7B0><D2AA><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>CefDoMessageLoopWork<72><6B><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static BOOL IsIdleMessage(const MSG* pMsg);
};
/** @class CefManager
* @brief Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class CefManager : public nbase::SupportWeakCallback
{
public:
SINGLETON_DEFINE(CefManager);
public:
CefManager();
~CefManager(){};
/**
* <EFBFBD><EFBFBD>cef dll<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"path"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>԰<EFBFBD>dll<EFBFBD>ļ<EFBFBD><EFBFBD>ŵ<EFBFBD>bin<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֶ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>dll<EFBFBD>ļ<EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void AddCefDllToPath();
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] app_data_dir Ӧ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] settings Cefȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] is_enable_offset_render <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>false Ӧ<EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
bool Initialize(const std::wstring& app_data_dir, CefSettings &settings, bool is_enable_offset_render = true);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void UnInitialize();
/**
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
bool IsEnableOffsetRender() const;
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return nbase::Dispatcher* <EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
nbase::Dispatcher* GetMessageDispatcher();
// <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void AddBrowserCount();
void SubBrowserCount();
int GetBrowserCount();
// <20><>Cef<65><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD><EFBFBD><EFBFBD>WM_QUIT<49><54>Ϣ
void PostQuitMessage(int nExitCode);
private:
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @param[in] app_data_dir Ӧ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>nim::Client::Init<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
* @param[out] settings cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void GetCefSetting(const std::wstring& app_data_dir, CefSettings &settings);
private:
CefMessageLoopDispatcher message_dispatcher_;
int browser_count_;
bool is_enable_offset_render_;
};
}