您的位置:首页 > 其它

cef1 mfc 对话框简单调用

2014-06-20 13:55 183 查看
////////////////////////////////////////

ClientHandler.h

////////////////////////////////////////

#ifndef _CLIENT_HANDLER_H_

#define _CLIENT_HANDLER_H_

#include "cef_client.h"

class ClientHandler

: public CefClient

, public CefLifeSpanHandler

{

public:

virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE;

//CefLifeSpanHandler

virtual bool OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,

const CefPopupFeatures& popupFeatures,

CefWindowInfo& windowInfo,

const CefString& url,

CefRefPtr<CefClient>& client,

CefBrowserSettings& settings) OVERRIDE;

virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;

virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;

virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;

public:

ClientHandler();

virtual ~ClientHandler();

private:

// The child browser window

CefRefPtr<CefBrowser> m_Browser;

// The child browser window handle

CefWindowHandle m_BrowserHwnd;

protected:

// Include the default reference counting implementation.

IMPLEMENT_REFCOUNTING(ClientHandler);

// Include the default locking implementation.

IMPLEMENT_LOCKING(ClientHandler);

};

#endif //_CLIENT_HANDLER_H_

////////////////////////////////////////

ClientHandler.cpp

////////////////////////////////////////

#include "stdafx.h"

#include "ClientHandler.h"

ClientHandler::ClientHandler()

{

}

ClientHandler::~ClientHandler()

{

//

}

//

CefRefPtr<CefLifeSpanHandler> ClientHandler::GetLifeSpanHandler()

{

return this;

}

//

bool ClientHandler::OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,

const CefPopupFeatures& popupFeatures,

CefWindowInfo& windowInfo,

const CefString& url,

CefRefPtr<CefClient>& client,

CefBrowserSettings& settings)

{

return false;

}

void ClientHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser)

{

if (!m_Browser.get())

{

m_Browser = browser;

m_BrowserHwnd = browser->GetWindowHandle();

}

}

bool ClientHandler::DoClose(CefRefPtr<CefBrowser> browser)

{

return false;

}

void ClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser)

{

if (browser->GetWindowHandle() == m_BrowserHwnd)

{

m_Browser->CloseBrowser();

m_Browser = NULL;

}

}

////////////////////////////////////////

TestCEFMFC.cpp BOOL CTestCEFMFCApp::InitInstance()

////////////////////////////////////////

CefSettings settings;

settings.multi_threaded_message_loop = true;

bool bRet = CefInitialize(settings, m_app);

CWinApp::InitInstance();

int CTestCEFMFCApp::ExitInstance()

{

// TODO: Add your specialized code here and/or call the base class

CefShutdown();

return CWinApp::ExitInstance();

}

////////////////////////////////////////

TestCEFMFCDlg.h

////////////////////////////////////////

CefRefPtr<ClientHandler> m_clientHandler;

////////////////////////////////////////

TestCEFMFCDlg.cpp

////////////////////////////////////////

CefRefPtr<ClientHandler> client(new ClientHandler());

m_clientHandler = client;

CefWindowInfo info;

RECT rect;

GetClientRect(&rect);

info.SetAsChild(GetSafeHwnd(), rect);

CefBrowserSettings browserSettings;

browserSettings.web_security_disabled = true;

CefBrowser::CreateBrowser(info, static_cast<CefRefPtr<CefClient> >(client), _T("http://www.baidu.com/"), browserSettings);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: