nim_duilib/examples/multi_browser/main.cpp

74 lines
2.0 KiB
C++
Raw Normal View History

2019-04-19 17:19:57 +08:00
// basic.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "main.h"
#include "browser/multi_browser_manager.h"
#pragma comment(lib, "dbghelp.lib")
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
// 将 bin\\cef 目录添加到环境变量,这样可以将所有 CEF 相关文件放到该目录下,方便管理
// 在项目属性->连接器->输入,延迟加载 nim_libcef.dll
nim_comp::CefManager::GetInstance()->AddCefDllToPath();
2019-04-19 17:19:57 +08:00
_wsetlocale(LC_ALL, L"chs");
#ifdef _DEBUG
AllocConsole();
FILE* fp = NULL;
freopen_s(&fp, "CONOUT$", "w+t", stdout);
wprintf_s(L"Command:\n%s\n\n", lpCmdLine);
#endif
HRESULT hr = ::OleInitialize(NULL);
if (FAILED(hr))
return 0;
// 初始化 CEF
CefSettings settings;
if (!nim_comp::CefManager::GetInstance()->Initialize(nbase::win32::GetCurrentModuleDirectory() + L"cef_temp\\", settings, true))
2019-04-19 17:19:57 +08:00
{
return 0;
}
// 创建主线程
MainThread thread;
// 执行主线程循环
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);
// 清理 CEF
nim_comp::CefManager::GetInstance()->UnInitialize();
2019-04-19 17:19:57 +08:00
::OleUninitialize();
return 0;
}
void MainThread::Init()
{
nbase::ThreadManager::RegisterThread(kThreadUI);
2019-04-19 17:19:57 +08:00
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
2019-04-19 17:19:57 +08:00
ui::GlobalManager::Startup(theme_dir + L"resources\\", ui::CreateControlCallback(), false);
nbase::TimeDelta time_delta = nbase::TimeDelta::FromMicroseconds(nbase::Time::Now().ToInternalValue());
std::string timeStamp = nbase::StringPrintf("%I64u", time_delta.ToMilliseconds());
MultiBrowserManager::GetInstance()->CreateBorwserBox(NULL, timeStamp, L"");
2019-04-19 17:19:57 +08:00
}
void MainThread::Cleanup()
{
ui::GlobalManager::Shutdown();
SetThreadWasQuitProperly(true);
nbase::ThreadManager::UnregisterThread();
}