165 lines
4.9 KiB
C
165 lines
4.9 KiB
C
![]() |
/** @file cef_control.h
|
|||
|
* @brief <EFBFBD><EFBFBD>װCef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊduilib<EFBFBD>ؼ<EFBFBD>
|
|||
|
* @copyright (c) 2016, NetEase Inc. All rights reserved
|
|||
|
* @author Redrain
|
|||
|
* @date 2016/7/19
|
|||
|
*/
|
|||
|
#pragma once
|
|||
|
#include "cef_control_base.h"
|
|||
|
#include "cef_control/util/memory_dc.h"
|
|||
|
|
|||
|
namespace ui
|
|||
|
{
|
|||
|
|
|||
|
class CefControl :public CefControlBase, public IUIMessageFilter
|
|||
|
{
|
|||
|
public:
|
|||
|
CefControl(void);
|
|||
|
~CefControl(void);
|
|||
|
|
|||
|
/// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3>ṩ<EFBFBD><E1B9A9><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual void Init() override;
|
|||
|
virtual void SetPos(UiRect rc) override;
|
|||
|
virtual void HandleMessage(EventArgs& event) override;
|
|||
|
virtual void SetVisible(bool bVisible = true) override;
|
|||
|
virtual void SetInternVisible(bool bVisible = true) override;
|
|||
|
virtual void Paint(IRenderContext* pRender, const UiRect& rcPaint) override;
|
|||
|
virtual void SetWindow(ui::Window* pManager, ui::Box* pParent, bool bInit) override;
|
|||
|
|
|||
|
virtual LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) override; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Cef<65><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] view һ<EFBFBD><EFBFBD> CefControl <EFBFBD>ؼ<EFBFBD>ʵ<EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CefControl<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD> false
|
|||
|
*/
|
|||
|
virtual bool AttachDevTools(Control* view) override;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void ReCreateBrowser() override;
|
|||
|
|
|||
|
protected:
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendButtonDownEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendButtonDoubleDownEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>굯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendButtonUpEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendMouseMoveEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendMouseWheelEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendMouseLeaveEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendKeyEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> BrowserHost
|
|||
|
* @param[in] uMsg <EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lParam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[out] bHandled <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
LRESULT SendCaptureLostEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] wparam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <EFBFBD><EFBFBD>ʾ<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>false <EFBFBD><EFBFBD>ʾû<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static bool IsKeyDown(WPARAM wparam);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> CEF <EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param[in] wparam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] lparam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static int GetCefKeyboardModifiers(WPARAM wparam, LPARAM lparam);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ת<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>Ϣ
|
|||
|
* @param[in] wparam <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static int GetCefMouseModifiers(WPARAM wparam);
|
|||
|
|
|||
|
private:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ݱ仯ʱ<E4BBAF><CAB1><EFBFBD>ᴥ<EFBFBD><E1B4A5><EFBFBD>˽ӿڣ<D3BF><DAA3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ݱ<EFBFBD><DDB1>浽<EFBFBD>ڴ<EFBFBD>dc
|
|||
|
// <20><><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>ˢ<EFBFBD>¿ؼ<C2BF><D8BC><EFBFBD><EFBFBD>ڿؼ<DABF><D8BC><EFBFBD>Paint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>dc<64><63>λͼ<CEBB><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <20>ɴ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual void OnPaint(CefRefPtr<CefBrowser> browser,
|
|||
|
CefRenderHandler::PaintElementType type,
|
|||
|
const CefRenderHandler::RectList& dirtyRects,
|
|||
|
const std::string* buffer,
|
|||
|
int width,
|
|||
|
int height) OVERRIDE;
|
|||
|
|
|||
|
virtual void OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) OVERRIDE;
|
|||
|
|
|||
|
virtual void OnPopupSize(CefRefPtr<CefBrowser> browser, const CefRect& rect) OVERRIDE;
|
|||
|
|
|||
|
private:
|
|||
|
MemoryDC dc_cef_; // <20>ڴ<EFBFBD>dc,<2C><>cef<65><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽dc<64><63>
|
|||
|
MemoryDC dc_cef_popup_; // <20>ڴ<EFBFBD>dc,<2C><>cef<65><66>popup<75><70><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ݱ<EFBFBD><DDB1>浽dc<64><63>
|
|||
|
CefRect rect_popup_; // <20><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ŀؼ<C4BF><D8BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
};
|
|||
|
|
|||
|
}
|