Fixed compilation errors

Signed-off-by: jiajia_deng <2894220@gmail.com>
This commit is contained in:
jiajia_deng 2019-09-22 12:21:38 +08:00
parent ad9a6b3edc
commit ce1686db1a
21 changed files with 86 additions and 49 deletions

View File

@ -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();

View File

@ -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." })");
})); }));
} }

View File

@ -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_;
}; };

View File

@ -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();
} }

View File

@ -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;

View File

@ -1,5 +1,11 @@
#pragma once #pragma once
enum ThreadId
{
kThreadUI,
kThreadGlobalMisc
};
class ControlForm : public ui::WindowImplBase class ControlForm : public ui::WindowImplBase
{ {
public: public:

View File

@ -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"));

View File

@ -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

View File

@ -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

View File

@ -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." })");
})); }));

View File

@ -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_;

View File

@ -6,6 +6,7 @@
using namespace ui; using namespace ui;
using namespace std; using namespace std;
using namespace nim_comp;
namespace namespace
{ {

View File

@ -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();

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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;
} }

View File

@ -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();

View File

@ -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>