Fixed compilation errors
Signed-off-by: jiajia_deng <2894220@gmail.com>
This commit is contained in:
parent
ad9a6b3edc
commit
ce1686db1a
@ -5,6 +5,11 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "basic_form.h"
|
#include "basic_form.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
_In_opt_ HINSTANCE hPrevInstance,
|
||||||
_In_ LPWSTR lpCmdLine,
|
_In_ LPWSTR lpCmdLine,
|
||||||
@ -24,7 +29,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 获取资源路径,初始化全局参数
|
// 获取资源路径,初始化全局参数
|
||||||
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
||||||
|
@ -31,10 +31,10 @@ ui::Control* CefForm::CreateControl(const std::wstring& pstrClass)
|
|||||||
// 扫描 XML 发现有名称为 CefControl 的节点,则创建一个 ui::CefControl 控件
|
// 扫描 XML 发现有名称为 CefControl 的节点,则创建一个 ui::CefControl 控件
|
||||||
if (pstrClass == L"CefControl")
|
if (pstrClass == L"CefControl")
|
||||||
{
|
{
|
||||||
if (nim_cef::CefManager::GetInstance()->IsEnableOffsetRender())
|
if (nim_comp::CefManager::GetInstance()->IsEnableOffsetRender())
|
||||||
return new ui::CefControl;
|
return new nim_comp::CefControl;
|
||||||
else
|
else
|
||||||
return new ui::CefNativeControl;
|
return new nim_comp::CefNativeControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -46,8 +46,8 @@ void CefForm::InitWindow()
|
|||||||
m_pRoot->AttachBubbledEvent(ui::kEventClick, nbase::Bind(&CefForm::OnClicked, this, std::placeholders::_1));
|
m_pRoot->AttachBubbledEvent(ui::kEventClick, nbase::Bind(&CefForm::OnClicked, this, std::placeholders::_1));
|
||||||
|
|
||||||
// 从 XML 中查找指定控件
|
// 从 XML 中查找指定控件
|
||||||
cef_control_ = dynamic_cast<ui::CefControlBase*>(FindControl(L"cef_control"));
|
cef_control_ = dynamic_cast<nim_comp::CefControlBase*>(FindControl(L"cef_control"));
|
||||||
cef_control_dev_ = dynamic_cast<ui::CefControlBase*>(FindControl(L"cef_control_dev"));
|
cef_control_dev_ = dynamic_cast<nim_comp::CefControlBase*>(FindControl(L"cef_control_dev"));
|
||||||
btn_dev_tool_ = dynamic_cast<ui::Button*>(FindControl(L"btn_dev_tool"));
|
btn_dev_tool_ = dynamic_cast<ui::Button*>(FindControl(L"btn_dev_tool"));
|
||||||
edit_url_ = dynamic_cast<ui::RichEdit*>(FindControl(L"edit_url"));
|
edit_url_ = dynamic_cast<ui::RichEdit*>(FindControl(L"edit_url"));
|
||||||
|
|
||||||
@ -64,13 +64,13 @@ void CefForm::InitWindow()
|
|||||||
// 加载皮肤目录下的 html 文件
|
// 加载皮肤目录下的 html 文件
|
||||||
cef_control_->LoadURL(nbase::win32::GetCurrentModuleDirectory() + L"resources\\themes\\default\\cef\\cef.html");
|
cef_control_->LoadURL(nbase::win32::GetCurrentModuleDirectory() + L"resources\\themes\\default\\cef\\cef.html");
|
||||||
|
|
||||||
if (!nim_cef::CefManager::GetInstance()->IsEnableOffsetRender())
|
if (!nim_comp::CefManager::GetInstance()->IsEnableOffsetRender())
|
||||||
cef_control_dev_->SetVisible(false);
|
cef_control_dev_->SetVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT CefForm::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CefForm::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
nim_cef::CefManager::GetInstance()->PostQuitMessage(0L);
|
nim_comp::CefManager::GetInstance()->PostQuitMessage(0L);
|
||||||
return __super::OnClose(uMsg, wParam, lParam, bHandled);
|
return __super::OnClose(uMsg, wParam, lParam, bHandled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ bool CefForm::OnClicked(ui::EventArgs* msg)
|
|||||||
cef_control_->AttachDevTools(cef_control_dev_);
|
cef_control_->AttachDevTools(cef_control_dev_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nim_cef::CefManager::GetInstance()->IsEnableOffsetRender())
|
if (nim_comp::CefManager::GetInstance()->IsEnableOffsetRender())
|
||||||
{
|
{
|
||||||
cef_control_dev_->SetVisible(cef_control_->IsAttachedDevTools());
|
cef_control_dev_->SetVisible(cef_control_->IsAttachedDevTools());
|
||||||
}
|
}
|
||||||
@ -131,8 +131,8 @@ void CefForm::OnLoadEnd(int httpStatusCode)
|
|||||||
FindControl(L"btn_forward")->SetEnabled(cef_control_->CanGoForward());
|
FindControl(L"btn_forward")->SetEnabled(cef_control_->CanGoForward());
|
||||||
|
|
||||||
// 注册一个方法提供前端调用
|
// 注册一个方法提供前端调用
|
||||||
cef_control_->RegisterCppFunc(L"ShowMessageBox", ToWeakCallback([this](const std::string& params, nim_cef::ReportResultFunction callback) {
|
cef_control_->RegisterCppFunc(L"ShowMessageBox", ToWeakCallback([this](const std::string& params, nim_comp::ReportResultFunction callback) {
|
||||||
shared::Toast::ShowToast(nbase::UTF8ToUTF16(params), 3000, GetHWND());
|
nim_comp::Toast::ShowToast(nbase::UTF8ToUTF16(params), 3000, GetHWND());
|
||||||
callback(false, R"({ "message": "Success." })");
|
callback(false, R"({ "message": "Success." })");
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// 当为 false 时因使用了真窗口模式不支持带有 WS_EX_LAYERED 属性窗口,所以使用外置窗口阴影方案,需要在 xml 中将窗口 shadowattached 属性设置为 false
|
// 当为 false 时因使用了真窗口模式不支持带有 WS_EX_LAYERED 属性窗口,所以使用外置窗口阴影方案,需要在 xml 中将窗口 shadowattached 属性设置为 false
|
||||||
const bool kEnableOffsetRender = false;
|
const bool kEnableOffsetRender = false;
|
||||||
|
|
||||||
class CefForm : public std::conditional<kEnableOffsetRender, ui::WindowImplBase, ui::ShadowWndBase>::type
|
class CefForm : public std::conditional<kEnableOffsetRender, ui::WindowImplBase, nim_comp::ShadowWndBase>::type
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CefForm();
|
CefForm();
|
||||||
@ -39,8 +39,8 @@ private:
|
|||||||
void OnLoadEnd(int httpStatusCode);
|
void OnLoadEnd(int httpStatusCode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ui::CefControlBase* cef_control_;
|
nim_comp::CefControlBase* cef_control_;
|
||||||
ui::CefControlBase* cef_control_dev_;
|
nim_comp::CefControlBase* cef_control_dev_;
|
||||||
ui::Button* btn_dev_tool_;
|
ui::Button* btn_dev_tool_;
|
||||||
ui::RichEdit* edit_url_;
|
ui::RichEdit* edit_url_;
|
||||||
};
|
};
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "cef_form.h"
|
#include "cef_form.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
#pragma comment(lib, "dbghelp.lib")
|
#pragma comment(lib, "dbghelp.lib")
|
||||||
|
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||||
@ -17,7 +22,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
// 将 bin\\cef 目录添加到环境变量,这样可以将所有 CEF 相关文件放到该目录下,方便管理
|
// 将 bin\\cef 目录添加到环境变量,这样可以将所有 CEF 相关文件放到该目录下,方便管理
|
||||||
// 在项目属性->连接器->输入,延迟加载 nim_libcef.dll
|
// 在项目属性->连接器->输入,延迟加载 nim_libcef.dll
|
||||||
nim_cef::CefManager::GetInstance()->AddCefDllToPath();
|
nim_comp::CefManager::GetInstance()->AddCefDllToPath();
|
||||||
|
|
||||||
HRESULT hr = ::OleInitialize(NULL);
|
HRESULT hr = ::OleInitialize(NULL);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
@ -25,7 +30,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
// 初始化 CEF
|
// 初始化 CEF
|
||||||
CefSettings settings;
|
CefSettings settings;
|
||||||
if (!nim_cef::CefManager::GetInstance()->Initialize(nbase::win32::GetCurrentModuleDirectory() + L"cef_temp\\", settings, kEnableOffsetRender))
|
if (!nim_comp::CefManager::GetInstance()->Initialize(nbase::win32::GetCurrentModuleDirectory() + L"cef_temp\\", settings, kEnableOffsetRender))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -37,7 +42,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);
|
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);
|
||||||
|
|
||||||
// 清理 CEF
|
// 清理 CEF
|
||||||
nim_cef::CefManager::GetInstance()->UnInitialize();
|
nim_comp::CefManager::GetInstance()->UnInitialize();
|
||||||
|
|
||||||
::OleUninitialize();
|
::OleUninitialize();
|
||||||
|
|
||||||
@ -46,7 +51,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 获取资源路径,初始化全局参数
|
// 获取资源路径,初始化全局参数
|
||||||
// 默认皮肤使用 resources\\themes\\default
|
// 默认皮肤使用 resources\\themes\\default
|
||||||
@ -57,7 +62,7 @@ void MainThread::Init()
|
|||||||
|
|
||||||
// 创建一个默认带有阴影的居中窗口
|
// 创建一个默认带有阴影的居中窗口
|
||||||
CefForm* window = new CefForm();
|
CefForm* window = new CefForm();
|
||||||
window->Create(NULL, CefForm::kClassName.c_str(), WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, 0, nim_cef::CefManager::GetInstance()->IsEnableOffsetRender());
|
window->Create(NULL, CefForm::kClassName.c_str(), WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, 0, nim_comp::CefManager::GetInstance()->IsEnableOffsetRender());
|
||||||
window->CenterWindow();
|
window->CenterWindow();
|
||||||
window->ShowWindow();
|
window->ShowWindow();
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ void ControlForm::InitWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Post task to UI thread
|
// Post task to UI thread
|
||||||
nbase::ThreadManager::PostTask(kThreadMain, nbase::Bind(&ControlForm::OnLoadedResourceFile, this, xml)); // or Post2UI(nbase::Bind(&ControlForm::OnLoadedResourceFile, this, xml));
|
nbase::ThreadManager::PostTask(kThreadUI, nbase::Bind(&ControlForm::OnLoadedResourceFile, this, xml)); // or Post2UI(nbase::Bind(&ControlForm::OnLoadedResourceFile, this, xml));
|
||||||
};
|
};
|
||||||
// Using ToWeakCallback to protect closure when if [ControlForm] was destoryed
|
// Using ToWeakCallback to protect closure when if [ControlForm] was destoryed
|
||||||
nbase::ThreadManager::PostTask(kThreadGlobalMisc, ToWeakCallback(closure)); // or Post2GlobalMisc(ToWeakCallback(closure));
|
nbase::ThreadManager::PostTask(kThreadGlobalMisc, ToWeakCallback(closure)); // or Post2GlobalMisc(ToWeakCallback(closure));
|
||||||
@ -111,7 +111,7 @@ void ControlForm::InitWindow()
|
|||||||
/* Post repeat task to update progress value 200 milliseconds once */
|
/* Post repeat task to update progress value 200 milliseconds once */
|
||||||
StdClosure repeat_task = [this]() {
|
StdClosure repeat_task = [this]() {
|
||||||
nbase::TimeDelta time_delta = nbase::TimeDelta::FromMicroseconds(nbase::Time::Now().ToInternalValue());
|
nbase::TimeDelta time_delta = nbase::TimeDelta::FromMicroseconds(nbase::Time::Now().ToInternalValue());
|
||||||
nbase::ThreadManager::PostTask(kThreadMain, nbase::Bind(&ControlForm::OnProgressValueChagned, this, time_delta.ToMilliseconds() % 100));
|
nbase::ThreadManager::PostTask(kThreadUI, nbase::Bind(&ControlForm::OnProgressValueChagned, this, time_delta.ToMilliseconds() % 100));
|
||||||
};
|
};
|
||||||
nbase::ThreadManager::PostRepeatedTask(kThreadGlobalMisc, ToWeakCallback(repeat_task), nbase::TimeDelta::FromMilliseconds(200));
|
nbase::ThreadManager::PostRepeatedTask(kThreadGlobalMisc, ToWeakCallback(repeat_task), nbase::TimeDelta::FromMilliseconds(200));
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ void ControlForm::InitWindow()
|
|||||||
point.y = rect.top + 10;
|
point.y = rect.top + 10;
|
||||||
ClientToScreen(m_hWnd, &point);
|
ClientToScreen(m_hWnd, &point);
|
||||||
|
|
||||||
ui::CMenuWnd* pMenu = new ui::CMenuWnd(NULL);
|
nim_comp::CMenuWnd* pMenu = new nim_comp::CMenuWnd(NULL);
|
||||||
ui::STRINGorID xml(L"settings_menu.xml");
|
ui::STRINGorID xml(L"settings_menu.xml");
|
||||||
pMenu->Init(xml, _T("xml"), point);
|
pMenu->Init(xml, _T("xml"), point);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI,
|
||||||
|
kThreadGlobalMisc
|
||||||
|
};
|
||||||
|
|
||||||
class ControlForm : public ui::WindowImplBase
|
class ControlForm : public ui::WindowImplBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -30,7 +30,7 @@ void MiscThread::Cleanup()
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 启动杂事处理线程
|
// 启动杂事处理线程
|
||||||
misc_thread_.reset(new MiscThread(kThreadGlobalMisc, "Global Misc Thread"));
|
misc_thread_.reset(new MiscThread(kThreadGlobalMisc, "Global Misc Thread"));
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
class MiscThread : public nbase::FrameworkThread
|
class MiscThread : public nbase::FrameworkThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MiscThread(enum ThreadIds thread_id, const char *name)
|
MiscThread(enum ThreadId thread_id, const char *name)
|
||||||
: FrameworkThread(name)
|
: FrameworkThread(name)
|
||||||
, thread_id_(thread_id) {}
|
, thread_id_(thread_id) {}
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ private:
|
|||||||
virtual void Cleanup() override;
|
virtual void Cleanup() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum ThreadIds thread_id_;
|
enum ThreadId thread_id_;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @class MainThread
|
/** @class MainThread
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "layouts_form.h"
|
#include "layouts_form.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
_In_opt_ HINSTANCE hPrevInstance,
|
||||||
_In_ LPWSTR lpCmdLine,
|
_In_ LPWSTR lpCmdLine,
|
||||||
@ -24,7 +29,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 获取资源路径,初始化全局参数
|
// 获取资源路径,初始化全局参数
|
||||||
// 默认皮肤使用 resources\\themes\\default
|
// 默认皮肤使用 resources\\themes\\default
|
||||||
|
@ -21,7 +21,7 @@ MultiBrowserForm* BrowserBox::GetBrowserForm() const
|
|||||||
return browser_form_;
|
return browser_form_;
|
||||||
}
|
}
|
||||||
|
|
||||||
ui::CefControlBase* BrowserBox::GetCefControl()
|
nim_comp::CefControlBase* BrowserBox::GetCefControl()
|
||||||
{
|
{
|
||||||
return cef_control_;
|
return cef_control_;
|
||||||
}
|
}
|
||||||
@ -33,7 +33,7 @@ std::wstring& BrowserBox::GetTitle()
|
|||||||
|
|
||||||
void BrowserBox::InitBrowserBox(const std::wstring &url)
|
void BrowserBox::InitBrowserBox(const std::wstring &url)
|
||||||
{
|
{
|
||||||
cef_control_ = static_cast<CefControlBase*>(FindSubControl(L"cef_control"));
|
cef_control_ = static_cast<nim_comp::CefControlBase*>(FindSubControl(L"cef_control"));
|
||||||
cef_control_->AttachBeforeContextMenu(nbase::Bind(&BrowserBox::OnBeforeMenu, this, std::placeholders::_1, std::placeholders::_2));
|
cef_control_->AttachBeforeContextMenu(nbase::Bind(&BrowserBox::OnBeforeMenu, this, std::placeholders::_1, std::placeholders::_2));
|
||||||
cef_control_->AttachMenuCommand(nbase::Bind(&BrowserBox::OnMenuCommand, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
cef_control_->AttachMenuCommand(nbase::Bind(&BrowserBox::OnMenuCommand, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||||
cef_control_->AttachTitleChange(nbase::Bind(&BrowserBox::OnTitleChange, this, std::placeholders::_1));
|
cef_control_->AttachTitleChange(nbase::Bind(&BrowserBox::OnTitleChange, this, std::placeholders::_1));
|
||||||
@ -80,10 +80,10 @@ ui::Control* BrowserBox::CreateControl(const std::wstring& pstrClass)
|
|||||||
{
|
{
|
||||||
if (pstrClass == L"CefControl")
|
if (pstrClass == L"CefControl")
|
||||||
{
|
{
|
||||||
if (nim_cef::CefManager::GetInstance()->IsEnableOffsetRender())
|
if (nim_comp::CefManager::GetInstance()->IsEnableOffsetRender())
|
||||||
return new CefControl;
|
return new nim_comp::CefControl;
|
||||||
else
|
else
|
||||||
return new CefNativeControl;
|
return new nim_comp::CefNativeControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -173,7 +173,7 @@ void BrowserBox::OnLoadStart()
|
|||||||
void BrowserBox::OnLoadEnd(int httpStatusCode)
|
void BrowserBox::OnLoadEnd(int httpStatusCode)
|
||||||
{
|
{
|
||||||
// 注册一个方法提供前端调用
|
// 注册一个方法提供前端调用
|
||||||
cef_control_->RegisterCppFunc(L"ShowMessageBox", ToWeakCallback([](const std::string& params, nim_cef::ReportResultFunction callback) {
|
cef_control_->RegisterCppFunc(L"ShowMessageBox", ToWeakCallback([](const std::string& params, nim_comp::ReportResultFunction callback) {
|
||||||
MessageBoxA(NULL, params.c_str(), "接收到 JavaScript 发来的消息", MB_OK);
|
MessageBoxA(NULL, params.c_str(), "接收到 JavaScript 发来的消息", MB_OK);
|
||||||
callback(false, R"({ "message": "Success." })");
|
callback(false, R"({ "message": "Success." })");
|
||||||
}));
|
}));
|
||||||
|
@ -36,7 +36,7 @@ public:
|
|||||||
* 获取Cef控件指针
|
* 获取Cef控件指针
|
||||||
* @return ui::CefControlBase* Cef控件
|
* @return ui::CefControlBase* Cef控件
|
||||||
*/
|
*/
|
||||||
ui::CefControlBase* GetCefControl();
|
nim_comp::CefControlBase* GetCefControl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取网页标题
|
* 获取网页标题
|
||||||
@ -115,7 +115,7 @@ private:
|
|||||||
void OnLoadError(CefLoadHandler::ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl);
|
void OnLoadError(CefLoadHandler::ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ui::CefControlBase *cef_control_;
|
nim_comp::CefControlBase *cef_control_;
|
||||||
|
|
||||||
// 任务栏缩略图管理
|
// 任务栏缩略图管理
|
||||||
TaskbarTabItem *taskbar_item_;
|
TaskbarTabItem *taskbar_item_;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
using namespace ui;
|
using namespace ui;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
using namespace nim_comp;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ interface IDropTargetHelper;
|
|||||||
|
|
||||||
class BrowserBox;
|
class BrowserBox;
|
||||||
class BrowserTabItem;
|
class BrowserTabItem;
|
||||||
class MultiBrowserForm : public ui::ShadowWndBase, public IDropTarget, public TaskbarManager::ITaskbarDelegate
|
class MultiBrowserForm : public nim_comp::ShadowWndBase, public IDropTarget, public TaskbarManager::ITaskbarDelegate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MultiBrowserForm();
|
MultiBrowserForm();
|
||||||
|
@ -175,7 +175,7 @@ bool MultiBrowserForm::OnProcessTabItemDrag(ui::EventArgs* param)
|
|||||||
|
|
||||||
// 把被拖拽的浏览器盒子生成一个宽度300的位图
|
// 把被拖拽的浏览器盒子生成一个宽度300的位图
|
||||||
HBITMAP bitmap = NULL;
|
HBITMAP bitmap = NULL;
|
||||||
if (nim_cef::CefManager::GetInstance()->IsEnableOffsetRender())
|
if (nim_comp::CefManager::GetInstance()->IsEnableOffsetRender())
|
||||||
bitmap = GenerateBoxOffsetRenderBitmap(borwser_box_tab_->GetPos(true));
|
bitmap = GenerateBoxOffsetRenderBitmap(borwser_box_tab_->GetPos(true));
|
||||||
else
|
else
|
||||||
bitmap = GenerateBoxWindowBitmap();
|
bitmap = GenerateBoxWindowBitmap();
|
||||||
@ -186,7 +186,7 @@ bool MultiBrowserForm::OnProcessTabItemDrag(ui::EventArgs* param)
|
|||||||
StdClosure cb = [=]{
|
StdClosure cb = [=]{
|
||||||
MultiBrowserManager::GetInstance()->DoDragBorwserBox(active_browser_box_, bitmap, pt);
|
MultiBrowserManager::GetInstance()->DoDragBorwserBox(active_browser_box_, bitmap, pt);
|
||||||
};
|
};
|
||||||
nbase::ThreadManager::PostTask(kThreadMain, cb);
|
nbase::ThreadManager::PostTask(kThreadUI, cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -106,7 +106,7 @@ void MultiBrowserManager::RemoveBorwserBox( std::string id, const BrowserBox* bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (box_map_.empty())
|
if (box_map_.empty())
|
||||||
nim_cef::CefManager::GetInstance()->PostQuitMessage(0);
|
nim_comp::CefManager::GetInstance()->PostQuitMessage(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MultiBrowserManager::SetEnableMerge(bool enable)
|
void MultiBrowserManager::SetEnableMerge(bool enable)
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "browser_box.h"
|
#include "browser_box.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
/** @class MultiBrowserManager
|
/** @class MultiBrowserManager
|
||||||
* @brief 多标签浏览器管理类,用于统一管理多标签浏览器打开、合并、拆分、拖拽功能
|
* @brief 多标签浏览器管理类,用于统一管理多标签浏览器打开、合并、拆分、拖拽功能
|
||||||
* @date 2019/3/20
|
* @date 2019/3/20
|
||||||
|
@ -17,7 +17,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
// 将 bin\\cef 目录添加到环境变量,这样可以将所有 CEF 相关文件放到该目录下,方便管理
|
// 将 bin\\cef 目录添加到环境变量,这样可以将所有 CEF 相关文件放到该目录下,方便管理
|
||||||
// 在项目属性->连接器->输入,延迟加载 nim_libcef.dll
|
// 在项目属性->连接器->输入,延迟加载 nim_libcef.dll
|
||||||
nim_cef::CefManager::GetInstance()->AddCefDllToPath();
|
nim_comp::CefManager::GetInstance()->AddCefDllToPath();
|
||||||
|
|
||||||
_wsetlocale(LC_ALL, L"chs");
|
_wsetlocale(LC_ALL, L"chs");
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
// 初始化 CEF
|
// 初始化 CEF
|
||||||
CefSettings settings;
|
CefSettings settings;
|
||||||
if (!nim_cef::CefManager::GetInstance()->Initialize(nbase::win32::GetCurrentModuleDirectory() + L"cef_temp\\", settings, true))
|
if (!nim_comp::CefManager::GetInstance()->Initialize(nbase::win32::GetCurrentModuleDirectory() + L"cef_temp\\", settings, true))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);
|
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);
|
||||||
|
|
||||||
// 清理 CEF
|
// 清理 CEF
|
||||||
nim_cef::CefManager::GetInstance()->UnInitialize();
|
nim_comp::CefManager::GetInstance()->UnInitialize();
|
||||||
|
|
||||||
::OleUninitialize();
|
::OleUninitialize();
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
||||||
ui::GlobalManager::Startup(theme_dir + L"resources\\", ui::CreateControlCallback(), false);
|
ui::GlobalManager::Startup(theme_dir + L"resources\\", ui::CreateControlCallback(), false);
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "richlist_form.h"
|
#include "richlist_form.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
_In_opt_ HINSTANCE hPrevInstance,
|
||||||
_In_ LPWSTR lpCmdLine,
|
_In_ LPWSTR lpCmdLine,
|
||||||
@ -24,7 +29,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 获取资源路径,初始化全局参数
|
// 获取资源路径,初始化全局参数
|
||||||
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
||||||
|
@ -56,7 +56,7 @@ bool RichlistForm::OnSelected(ui::EventArgs* args)
|
|||||||
|
|
||||||
|
|
||||||
auto message = nbase::StringPrintf(L"您选择了索引为 %d 的子项,上一次选择子项索引为 %d", current, old);
|
auto message = nbase::StringPrintf(L"您选择了索引为 %d 的子项,上一次选择子项索引为 %d", current, old);
|
||||||
ShowMsgBox(GetHWND(), MsgboxCallback(), message, false, L"Ìáʾ", false);
|
nim_comp::ShowMsgBox(GetHWND(), nim_comp::MsgboxCallback(), message, false, L"Ìáʾ", false);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
#include "main_form.h"
|
#include "main_form.h"
|
||||||
#include "VirtualTileBox.h"
|
#include "VirtualTileBox.h"
|
||||||
|
|
||||||
|
enum ThreadId
|
||||||
|
{
|
||||||
|
kThreadUI
|
||||||
|
};
|
||||||
|
|
||||||
ui::Control* MyCreateControlCallback(const std::wstring& sName)
|
ui::Control* MyCreateControlCallback(const std::wstring& sName)
|
||||||
{
|
{
|
||||||
if (sName == L"VirtualTileBox")
|
if (sName == L"VirtualTileBox")
|
||||||
@ -34,7 +39,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
void MainThread::Init()
|
void MainThread::Init()
|
||||||
{
|
{
|
||||||
nbase::ThreadManager::RegisterThread(kThreadMain);
|
nbase::ThreadManager::RegisterThread(kThreadUI);
|
||||||
|
|
||||||
// 获取资源路径,初始化全局参数
|
// 获取资源路径,初始化全局参数
|
||||||
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
|
||||||
|
@ -107,7 +107,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalLibraryDirectories>..\libs\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\libs\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>nim_libcef_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -128,7 +128,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalLibraryDirectories>..\libs\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\libs\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>nim_libcef_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -153,7 +153,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalLibraryDirectories>..\libs\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\libs\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>nim_libcef.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -178,7 +178,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalLibraryDirectories>..\libs\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\libs\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>nim_libcef.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/IGNORE:4006,4221 %(AdditionalOptions)</AdditionalOptions>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
Loading…
Reference in New Issue
Block a user