如何利用CEF3创建一个简单的苹果创建应用程序序

猜你还喜欢建立一个简单的powerbuilder应用程序需要的步骤_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
建立一个简单的powerbuilder应用程序需要的步骤
我有更好的答案
新建一个application:点击file→new,在弹出的窗口中点击workspace,新建一个workspace第三步:点击file→new:新建一个窗口,在上面添加数据窗口、按钮等控件。第五步:编译运行,在弹出的窗口中点击target→application。第四步第一步:打开pb9第二步
采纳率:37%
直接新建一个application,根据Wizard来进行操作即可完成. 简单的很.
为您推荐:
其他类似问题
powerbuilder的相关知识
换一换
回答问题,赢新手礼包这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子。如果想知道关于CEF3更多的使用方法,可以去访问 .
首先,根据自身所使用的开发平台,可以去
下载对应的发布版本。针对这个教程,我们需要下载1750或者更新的版本。当前支持的平台有Windows, Linux和Mac OS X。每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源。您可以通过包含在里边的 REDME.txt 文件或者在Wiki上
中的 Getting Started,了解每个发布版本的具体内容和细节。
3. 编译发布版本中的项目
以CEF发布版本为基础开发的应用程序可以使用标准的平台编译工具进行编译执行。包括 Windows 平台下的 Visual Studio, Mac OS X 平台下的 Xcode,
以及 Linux 平台下的 gcc/make。针对平台的不同,项目的编译过程也有些许的不同和要求。
Windows 平台下编译 Cefsimple 步骤:
用对应的 Visual Studio 版本打开项目解决方案。举个例子,如果你安装的是 Visual Studio 2010, 那么,打开的就是 cesimple2010.sln。
如果你下载的是 x64版本,请确保你选择的是 x64的开发平台。
开始编译。
如果编译通过,那么,在当前解决方案的目录下,将出现“out/Debug”(或者 “out/Release”)文件夹。
执行文件夹下 cefsimple.exe, 确保能正确运行。
加载一个自定义URL
cefsimple项目中默认加载的URL是 ,当然,你也可以用自定义的 URL 去替代它,最方便的就是通过命令行搞定。
# Load the local file “c:\example\example.html”
cefsimple.exe --url=file:
除了命令行的方法,也可以通过直接修改在 cefsimple/simple.cpp 文件中的代码,达到你的目的。
if (url.empty())
url = file:
应用程序组成
所有的 CEF 应用程序都有一下主要组成部分:
CEF 的动态链接库 。(在 Windows 平台下就是 libcef.dll)
支持库。(ICU, FFMPEG等)
资源。(html/js/css, strings等)
客户端执行文件。(本教程中就是 cefsimple.exe.)
要点(必看)
CEF 使用的是多进程。应用程序主进程是浏览器进程,而其他子进程是由 renderer, plugins, GPU等创建。
在 Windows 和 Linux 平台下的执行文件可以被主进程和子进程使用。
CEF 中所有进程都可以是多线程的。CEF提供了许多功能和接口在不同的线程中传递任务。
一些回调方法和函数只能在特定的进程或者线程中使用。在你第一次使用新的回调方法或者函数之前,请确保你已经阅读了 API 头文件中源码,看使用要求。
cefsimple 应用程序首先初始化CEF,然后创建了一个简单的弹出浏览器窗口。当关闭了所有的浏览器窗口,应用程序就会结束。程序执行流程如下:
系统执行入口点函数(main or wWinMain),并创建浏览器进程。
入口点函数:
创建能够处理进程级别的回调方法的 SimpleApp 实例。
初始化 CEF,进入 CEF 消息循环。
初始化 CEF 之后,调用 SimpleApp::OnContextInitialized() 。这个方法中:
创建单例的 SimpleHandler 。
由 CefBrowserHost::CreateBrowsersync() 方法创建一个浏览器窗口。
所有的浏览器共享 SimpleHandler 实例, 此实例能定制浏览器行为、处理浏览器相关回调方法(life span, loading state, title display等)。
当一个浏览器窗口关闭的时候,调用 SimpleHandler::OnBeforeClose() 。当所有的浏览器窗口全部关闭时,OnBeforeClose() 函数就会执行跳出 CEF 消息循环的行为,退出应用程序。
入口点函数
程序的运行开始于浏览器进程中的入口点函数。这个函数会初始化 CEF 以及所有跟操作系统有关的对象。
#include &windows.h&
#include "cefsimple/simple_app.h"
#include "include/cef_sandbox_win.h"
#define CEF_ENABLE_SANDBOX 1
#if CEF_ENABLE_SANDBOX
#pragma comment(lib, "cef_sandbox.lib")
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
lpCmdLine,
nCmdShow) {
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
void* sandbox_info = NULL;
#if CEF_ENABLE_SANDBOX
CefScopedSandboxInfo scoped_
sandbox_info = scoped_sandbox.sandbox_info();
CefMainArgs main_args(hInstance);
CefRefPtr&SimpleApp& app(new SimpleApp);
int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
if (exit_code &= 0) {
return exit_
#if !CEF_ENABLE_SANDBOX
settings.no_sandbox = true;
CefInitialize(main_args, settings, app.get(), sandbox_info);
CefRunMessageLoop();
CefShutdown();
SimpleApp 负责处理进程级别的回调方法。它会曝露出一些在多进程中共享或者被特定进程使用的接口和方法。CefBrowserProcessHandler 接口,在浏览器进程中调用。还有一个被分离出 CefBrowserProcessHandler 接口(例子项目没有展示)只会在渲染进程中被调用。由于 CefBrowserProcessHandler 不光实现了 CefApp, 同时还有 CefBrowserProcessHandler,所以它的返回值必须是[this]。
#include "include/cef_app.h"
class SimpleApp : public CefApp,
public CefBrowserProcessHandler {
SimpleApp();
virtual CefRefPtr&CefBrowserProcessHandler& GetBrowserProcessHandler()
OVERRIDE { return }
virtual void OnContextInitialized() OVERRIDE;
IMPLEMENT_REFCOUNTING(SimpleApp);
#include "cefsimple/simple_app.h"
#include &string&
#include "cefsimple/simple_handler.h"
#include "cefsimple/util.h"
#include "include/cef_browser.h"
#include "include/cef_command_line.h"
SimpleApp() {
void SimpleApp() {
REQUIRE_UI_THREAD();
CefWindowInfo window_
#if defined(OS_WIN)
window_info.SetAsPopup(NULL, "cefsimple");
CefRefPtr&SimpleHandler& handler(new SimpleHandler());
CefBrowserSettings browser_
CefRefPtr&CefCommandLine& command_line =
CefCommandLine();
url = command_line-&GetSwitchValue("url");
if (url.empty())
CefBrowserHost(window_info, handler.get(), url,
browser_settings, NULL);
SimpleHandler
SimpleHandler 负责处理浏览器级别的回调方法。这些回调方法会在浏览器进程中执行。在这个项目中,针对所有的浏览器使用相同的 CefClient 实例,但是如果你愿意,可以在自己的应用程序中使用不同的 CefClient实例的。
#include "include/cef_client.h"
#include &list&
class SimpleHandler : public CefClient,
public CefDisplayHandler,
public CefLifeSpanHandler,
public CefLoadHandler {
SimpleHandler();
~SimpleHandler();
static SimpleHandler* GetInstance();
virtual CefRefPtr&CefDisplayHandler& GetDisplayHandler() OVERRIDE {
return this;
virtual CefRefPtr&CefLifeSpanHandler& GetLifeSpanHandler() OVERRIDE {
return this;
virtual CefRefPtr&CefLoadHandler& GetLoadHandler() OVERRIDE {
return this;
virtual void OnTitleChange(CefRefPtr&CefBrowser& browser,
const CefString& title) OVERRIDE;
virtual void OnAfterCreated(CefRefPtr&CefBrowser& browser) OVERRIDE;
virtual void OnBeforeClose(CefRefPtr&CefBrowser& browser) OVERRIDE;
virtual void OnLoadError(CefRefPtr&CefBrowser& browser,
CefRefPtr&CefFrame& frame,
ErrorCode errorCode,
const CefString& errorText,
const CefString& failedUrl) OVERRIDE;
void CloseAllBrowsers(bool force_close);
typedef std::list&CefRefPtr&CefBrowser& & BrowserL
BrowserList browser_list_;
IMPLEMENT_REFCOUNTING(SimpleHandler);
#include "cefsimple/simple_handler.h"
#include &sstream&
#include &string&
#include "cefsimple/util.h"
#include "include/cef_app.h"
#include "include/cef_runnable.h"
namespace {
SimpleHandler* g_instance = NULL;
SimpleHandler::SimpleHandler() {
ASSERT(!g_instance);
g_instance = this;
SimpleHandler::~SimpleHandler() {
g_instance = NULL;
SimpleHandler* SimpleHandler::GetInstance() {
void SimpleHandler::OnAfterCreated(CefRefPtr&CefBrowser& browser) {
REQUIRE_UI_THREAD();
browser_list_.push_back(browser);
void SimpleHandler::OnBeforeClose(CefRefPtr&CefBrowser& browser) {
REQUIRE_UI_THREAD();
BrowserList::iterator bit = browser_list_.begin();
for (; bit != browser_list_.end(); ++bit) {
if ((*bit)-&IsSame(browser)) {
browser_list_.erase(bit);
if (browser_list_.empty()) {
CefQuitMessageLoop();
void SimpleHandler::OnLoadError(CefRefPtr&CefBrowser& browser,
CefRefPtr&CefFrame& frame,
ErrorCode errorCode,
const CefString& errorText,
const CefString& failedUrl) {
REQUIRE_UI_THREAD();
if (errorCode == ERR_ABORTED)
std::stringstream
ss && "&html&&body bgcolor=\"white\"&"
"&h2&Failed to load URL " && std::string(failedUrl) &&
" with error " && std::string(errorText) && " (" && errorCode &&
").&/h2&&/body&&/html&";
frame-&LoadString(ss.str(), failedUrl);
void SimpleHandler::CloseAllBrowsers(bool force_close) {
if (!CefCurrentlyOn(TID_UI)) {
CefPostTask(TID_UI,
NewCefRunnableMethod(this, &SimpleHandler::CloseAllBrowsers,
force_close));
if (browser_list_.empty())
BrowserList::const_iterator it = browser_list_.begin();
for (; it != browser_list_.end(); ++it)
(*it)-&GetHost()-&CloseBrowser(force_close);
#include "cefsimple/simple_handler.h"
#include &string&
#include &windows.h&
#include "cefsimple/util.h"
#include "include/cef_browser.h"
void SimpleHandler::OnTitleChange(CefRefPtr&CefBrowser& browser,
const CefString& title) {
REQUIRE_UI_THREAD();
CefWindowHandle hwnd = browser-&GetHost()-&GetWindowHandle();
SetWindowText(hwnd, std::wstring(title).c_str());
#include "cefsimple/simple_handler.h"
#include &gtk/gtk.h&
#include &string&
#include "cefsimple/util.h"
#include "include/cef_browser.h"
void SimpleHandler::OnTitleChange(CefRefPtr&CefBrowser& browser,
const CefString& title) {
REQUIRE_UI_THREAD();
GtkWidget* window = gtk_widget_get_ancestor(
GTK_WIDGET(browser-&GetHost()-&GetWindowHandle()),
GTK_TYPE_WINDOW);
std::string titleStr(title);
gtk_window_set_title(GTK_WINDOW(window), titleStr.c_str());
#include "cefsimple/simple_handler.h"
#import &Cocoa/Cocoa.h&
#include "cefsimple/util.h"
#include "include/cef_browser.h"
void SimpleHandler::OnTitleChange(CefRefPtr&CefBrowser& browser,
const CefString& title) {
REQUIRE_UI_THREAD();
NSView* view = (NSView*)browser-&GetHost()-&GetWindowHandle();
NSWindow* window = [view window];
std::string titleStr(title);
NSString* str = [NSString stringWithUTF8String:titleStr.c_str()];
[window setTitle:str];
编译步骤(Windows)
编译 libcef_dll_wrapper 静态库。
编译/链接项目。
cefsimple_win.cpp, simple_app.cpp, simple_handler.cpp, simple_handler_win.cpp.
comctl32.lib, shlwapi.lib, rcprt4.lib, libcef_dll_wrapper.lib, libcef.lib, cef_sandbox.lib.
(注意:cef_sandbox.lib 是 sandbox 支持,当前内部仅支持 VS2010, 如果使用其他VS版本,可以将 cefsimple_win.cpp 中 的 CEF_ENABLE_SANDBOX 设置为 0)
将有关的库和资源复制到输出目录。
将 Debug/Release 文件夹下文件复制到输出目录。
输出目录的结构应该如下:
Application/
cefsimple.exe
cefsimple application executable
libcef.dll &= main CEF library
icudt.dll &= ICU unicode support library
ffmpegsumo.dll &= HTML5 audio/video support library
libEGL.dll, libGLESv2.dll, … &= accelerated compositing support libraries
cef.pak, devtools_resources.pak &= non-localized resources and strings
en-US.pak, … &= locale-specific resources and strings
本文已收录于以下专栏:
相关文章推荐
近期由于工作需要开始
本例开发环境:WIN10 + VS2015如果还没有编译CEF3库,请见:Windows下用VS2015编译CEF3创建一个空的 Windows 应用程序,命名为 SimpleBrowser,如下图:...
Application Structure
应用程序结构
Every CEF3 application has the same general structure.
CEF出来很久了,使用的也很广泛的,QQ里面很多地方都是嵌入的CEF浏览器(个人资料、微博、查找……),网上的资料也挺多的,大家可以搜搜看。
首先是下载CEF代码编译,通过里面的那两个例子你也可以依葫...
研究CEF3中自带的两个例程中的CEFSimple(简单例程)
Application Layout
应用资源布局
Application layout can differ significantly depending on the platfor...
CEF 的官网介绍的很简洁:A simple framework for embedding chromium browser windows in other applications。具体地说就是...
在CEF里,JS和Native(C/C++)代码可以很方便的交互,我实现了一个简单的交互示例。...
通过上一篇文章,已经可以浏览网页了,但有一个问题,就是那最大化对话框后,网页的浏览区域并没有变,如何让浏览区域变化呢?...
首先第一步在mfc win32 启动线程时候做cef浏览器设置,默认在app 类中的InitInstance()函数,大概是因为cef的配置必须要在winmain刚进来时候就要设置了。太晚了不知道何种...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)如何利用CEF3创建一个简单的应用程序_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
如何利用CEF3创建一个简单的应用程序
我有更好的答案
\example\example.html”…
if (url.empty())
url = file. 一些回调方法和函数只能在特定的进程或者线程中使用;/c:&#47.dll)2。加载一个自定义URLcefsimple项目中默认加载的URL是 ,当然, strings等)4,打开的就是 cesimple2010.sln。2. 如果你下载的是 x64版本,你也可以用自定义的 URL 去替代它,最方便的就是通过命令行搞定。# Load the local file “c,请确保你选择的是 x64的开发平台.txt 文件或者在Wiki上GeneralUsage 中的 Getting S/ link successfully with other VS versions.#pragma comment(lib, &quot. CEF 使用的是多进程。应用程序主进程是浏览器进程,而其他子进程是由 renderer, plugins。针对这个教程,我们需要下载1750或者更新的版本。当前支持的平台有Windows, Linux和Mac OS X。每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源,达到你的目的。# Load the local file “c。4.int APIENTRY wWinMain(HINSTANCE hInstance.html除了命令行的方法,也可以通过直接修改在 cefsimple&#47.lib static library is currently built with VS2010,调用 SimpleHandler:;/&#47。Windows#include &lt. 创建能够处理进程级别的回调方法的 SimpleApp 实例。2. 初始化 CEF, title display等)。5. 当一个浏览器窗口关闭的时候:1,请确保你已经阅读了 API 头文件中源码,看使用要求。流程分析cefsimple 应用程序首先初始化CEF;css. 初始化 CEF 之后, 此实例能定制浏览器行为、处理浏览器相关回调方法(life span, loading state。这个函数会初始化 CEF 以及所有跟操作系统有关的对象. CEF 中所有进程都可以是多线程的。CEF提供了许多功能和接口在不同的线程中传递任务。2。(在 Windows 平台下就是
应用程序组成所有的 CEF 应用程序都有一下主要组成部分:1. CEF 的动态链接库 . 如果编译通过。3. 创建单例的 SimpleHandler 。4, 那么,
以及 Linux 平台下的 gcc&#47.h&#include &quot。2. 由 CefBrowserH/ The cef_sandbox:\example\example.html”cefsimple:OnBeforeClose() 。当所有的浏览器窗口全部关闭时;simple.cpp 文件中的代码开始首先; Set to 0 to disable sandbox support.#define CEF_ENABLE_SANDBOX 1#if CEF_ENABLE_SANDBOX/simple_app.h&make。针对平台的不同,项目的编译过程也有些许的不同和要求。WindowsWindows 平台下编译 Cefsimple 步骤:1. 用对应的 Visual Studio 版本打开项目解决方案,OnBeforeClose() 函数就会执行跳出 CEF 消息循环的行为,退出应用程序,
HINSTANCE hPrevInstance,调用 SimpleApp:,
lpCmdLcefsimple&#47。入口点函数程序的运行开始于浏览器进程中的入口点函数。3, GPU等创建:/&#47. 支持库。(ICU. It may not/example/Release”)文件夹。5. 执行文件夹下 cefsimple.exe, 确保能正确运行, FFMPEG等)3. 资源。(html/js&#47。举个例子,如果你安装的是 Visual Studio 2010. 客户端执行文件。(本教程中就是 cefsimple.exe.)要点(必看)1。在你第一次使用新的回调方法或者函数之前.lib&)#endif/&#47::CreateBrowsersync() 方法创建一个浏览器窗口。4. 所有的浏览器共享 SimpleHandler 实例:1。程序执行流程如下:1. 系统执行入口点函数(main or wWinMain). 在 Windows 和 Linux 平台下的执行文件可以被主进程和子进程使用;example,进入 CEF 消息循环。您可以通过包含在里边的 REDME:OnContextInitialized() 。这个方法中:/example/example.html. 开始编译; Entry point function for all processes。当关闭了所有的浏览器窗口,应用程序就会结束。3;#include &include/cef_sandbox_win.h&quot,了解每个发布版本的具体内容和细节。编译发布版本中的项目以CEF发布版本为基础开发的应用程序可以使用标准的平台编译工具进行编译执行。包括 Windows 平台下的 Visual Studio, Mac OS X 平台下的 Xc,然后创建了一个简单的弹出浏览器窗口,那么,在当前解决方案的目录下,将出现“out/Debug”(或者 “out&#47,并创建浏览器进程。2. 入口点函数,
nCmdShow) {
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
void* sandbox_info = NULL;#if CEF_ENABLE_SANDBOX
// Manage the life span of the sandbox information object. This is necessary
// for sandbox support on Windows. See cef_sandbox_win.h for complete details.
CefScopedSandboxInfo scoped_
sandbox_info = scoped_sandbox.sandbox_info();#endif
// Provide CEF with command-line arguments.
CefMainArgs main_args(hInstance);
// SimpleApp implements application-level callbacks. It will create the first
// browser instance in OnContextInitialized() after CEF has initialized.
CefRefPtr&SimpleApp& app(new SimpleApp);
// CEF applications have multiple sub-processes (render, plugin, GPU, etc)
// that share the same executable. This function checks the command-line and,
// if this is a sub-process, executes the appropriate logic.
int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
if (exit_code &= 0) {
// The sub-process has completed so return here.
return exit_
// Specify CEF global settings here.
CefS#if !CEF_ENABLE_SANDBOX
settings.no_sandbox =#endif
// Initialize CEF.
CefInitialize(main_args, settings, app.get(), sandbox_info);
// Run the CEF message loop. This will block until CefQuitMessageLoop() is
// called.
CefRunMessageLoop();
// Shut down CEF.
CefShutdown();
return 0;}SimpleAppSimpleApp 负责处理进程级别的回调方法。它会曝露出一些在多进程中共享或者被特定进程使用的接口和方法。CefBrowserProcessHandler 接口,在浏览器进程中调用。还有一个被分离出 CefBrowserProcessHandler 接口(例子项目没有展示)只会在渲染进程中被调用。由于 CefBrowserProcessHandler 不光实现了 CefApp, 同时还有 CefBrowserProcessHandler,所以它的返回值必须是[this]。// simple_app.h#include &include/cef_app.h&class SimpleApp : public CefApp,
public CefBrowserProcessHandler { public:
SimpleApp();
// CefApp methods:
virtual CefRefPtr&CefBrowserProcessHandler& GetBrowserProcessHandler()
OVERRIDE { }
// CefBrowserProcessHandler methods:
virtual void OnContextInitialized() OVERRIDE; private:
// Include the default reference counting implementation.
IMPLEMENT_REFCOUNTING(SimpleApp);};// simple_app.cpp#include &cefsimple/simple_app.h&#include &string&#include &cefsimple/simple_handler.h&#include &cefsimple/util.h&#include &include/cef_browser.h&#include &include/cef_command_line.h&SimpleApp::SimpleApp() {}void SimpleApp::OnContextInitialized() {
REQUIRE_UI_THREAD();
// Information used when creating the native window.
CefWindowInfo window_#if defined(OS_WIN)
// On Windows we need to specify certain flags that will be passed to
// CreateWindowEx().
window_info.SetAsPopup(NULL, &cefsimple&);#endif
// SimpleHandler implements browser-level callbacks.
CefRefPtr&SimpleHandler& handler(new SimpleHandler());
// Specify CEF browser settings here.
CefBrowserSettings browser_
// Check if a &--url=& value was provided via the command-line. If so, use
// that instead of the default URL.
CefRefPtr&CefCommandLine& command_line =
CefCommandLine::GetGlobalCommandLine();
url = command_line-&GetSwitchValue(&url&);
if (url.empty())
// Create the first browser window.
CefBrowserHost::CreateBrowserSync(window_info, handler.get(), url,
browser_settings, NULL);}SimpleHandlerSimpleHandler 负责处理浏览器级别的回调方法。这些回调方法会在浏览器进程中执行。在这个项目中,针对所有的浏览器使用相同的 CefClient 实例,但是如果你愿意,可以在自己的应用程序中使用不同的 CefClient实例的。// simple_handler.h#include &include/cef_client.h&#include &list&class SimpleHandler : public CefClient,
public CefDisplayHandler,
public CefLifeSpanHandler,
public CefLoadHandler { public:
SimpleHandler();
~SimpleHandler();
// Provide access to the single global instance of this object.
static SimpleHandler* GetInstance();
// CefClient methods:
virtual CefRefPtr&CefDisplayHandler& GetDisplayHandler() OVERRIDE {
virtual CefRefPtr&CefLifeSpanHandler& GetLifeSpanHandler() OVERRIDE {
virtual CefRefPtr&CefLoadHandler& GetLoadHandler() OVERRIDE {
// CefDisplayHandler methods:
virtual void OnTitleChange(CefRefPtr&CefBrowser& browser,
const CefString& title) OVERRIDE;
// CefLifeSpanHandler methods:
virtual void OnAfterCreated(CefRefPtr&CefBrowser& browser) OVERRIDE;
virtual void OnBeforeClose(CefRefPtr&CefBrowser& browser) OVERRIDE;
// CefLoadHandler methods:
virtual void OnLoadError(CefRefPtr&CefBrowser& browser,
CefRefPtr&CefFrame& frame,
ErrorCode errorCode,
const CefString& errorText,
const CefString& failedUrl) OVERRIDE;
// Request that all existing browser windows close.
void CloseAllBrowsers(bool force_close); private:
// List of existing browser windows. Only accessed on the CEF UI thread.
typedef std::list&CefRefPtr&CefBrowser& & BrowserL
BrowserList browser_list_;
// Include the default reference counting implementation.
IMPLEMENT_REFCOUNTING(SimpleHandler);};// simple_handler.cpp#include &cefsimple/simple_handler.h&#include &sstream&#include &string&#include &cefsimple/util.h&#include &include/cef_app.h&#include &include/cef_runnable.h&namespace {SimpleHandler* g_instance = NULL;.exe --url=file:/cef_sandbox,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本
采纳率:94%
来自团队:
为您推荐:
其他类似问题
应用程序的相关知识
换一换
回答问题,赢新手礼包

我要回帖

更多关于 vs创建窗体应用程序 的文章

 

随机推荐