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);
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);
相关文章推荐
- 关于如何调用mfc带资源对话框的dll的简单演示
- 原来调用MFCDLL中对话框是如此简单。。
- 简单调用VS自带的数据源选择对话框实现数据库连接字符串配置
- VC++MFC 调用DLL里的对话框资源
- 在VC.net MFC对话框中调用C#组件
- MFC中调用颜色对话框
- MFC调用WebService,WCF的简单例子(转)
- ATL写的DLL中调用MFC对话框
- MFC对话框退出程序所调用的函数
- 简单调用VS自带的数据源选择对话框实现数据库连接字符串配置
- ATL写的DLL中调用MFC对话框
- MFC创建,销毁,打开模式对话框,关闭模式对话框等函数调用顺序
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- 用MFC写对话框形式的DLL并用程序进行调用方法
- MFC对话框简单实现窗口全透明的方法
- MFC 对话框XP风格渲染简单方式
- MFC对话框创建和销毁窗口时,函数的调用顺序
- 简单调用VS自带的数据源选择对话框实现数据库连接字符串配置
- [MFC]设置对话框所有控件字体为同一字体的简单方法
- MFC调用打开文件、文件夹对话框