本文只对miniblink的个人理解,通过修改官方提供的demo_src,具体使用还没那么清楚,还在逐步理解。
1、官网下载demo
2、win32环境 node.dll;x64环境 miniblink_x64.dll;wke.h头文件
3、打开vs,新建项目,mfc或者空项目都行,使用 Unicode 字符集、不使用预编译头
其中:RenderGDI.h、Resource.h、wkeBrowser.cpp、wke.h都在miniblink-20200614\demo_src中里面有,直接拷贝过来就好了
4、原.cpp
#include "wke.h"
#include <xstring>
int APIENTRY wkeBrowserMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
typedef struct {
wkeWebView window;
std::wstring url;
} Application;
Application app;
void runMessageLoop(Application* app)
{
MSG msg = { 0 };
while (GetMessageW(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
void runApp(Application* app)
{
memset(app, 0, sizeof(Application));
app->url = L"http://hook.test/resources/view/index.html"; // 演示使用hook的方式加载资源
//wkeJsBindFunction("eShellExec", &onShellExec, nullptr, 3);
wkeBrowserMain(nullptr, nullptr, nullptr, TRUE);
wkeMoveToCenter(app->window);
wkeLoadURLW(app->window, app->url.c_str());
runMessageLoop(app);
}
int main()
{
wkeInitialize();
runApp(&app);
wkeFinalize();
}
mfc添加一个按键,修改MFC_miniblinkDlg.cpp
#include "miniblink/wke.h"
#include <xstring>
int APIENTRY wkeBrowserMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
typedef struct {
wkeWebView window;
std::wstring url;
} Application;
Application app;
void runMessageLoop(Application* app)
{
MSG msg = { 0 };
while (GetMessageW(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
void runApp(Application* app)
{
memset(app, 0, sizeof(Application));
app->url = L"http://hook.test/resources/view/index.html"; // 演示使用hook的方式加载资源
//wkeJsBindFunction("eShellExec", &onShellExec, nullptr, 3);
wkeBrowserMain(nullptr, nullptr, nullptr, TRUE);
//wkeMoveToCenter(app->window);
//wkeLoadURLW(app->window, app->url.c_str());
runMessageLoop(app);
}
void CMFC_miniblinkDlg::OnBnClickedButton1()//mfc按键
{
// TODO: 在此添加控件通知处理程序代码
wkeInitialize();
runApp(&app);
wkeFinalize();
}
注意:x86对应node.dll;x64对应miniblink_x64.dll,两个dll都放在主文件目录下哦!
5、结果