日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Miniblink 入门

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Miniblink 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

miniblink官網:入門之前強烈建議將Miniblink介紹仔細看一遍。

MB內核組件標準版接口文檔:這里列舉了所有的api以及簡單的說明,但是本人建議還是看wke.h更方便,里面都是宏實現的,直接搜相關函數即可。

mb demo下載和參考:里面有說明文檔,初步可以看看文檔和運行了解一下。

miniblink概括

  • miniblink是單進程程序與cef多進程相比簡單很多。
  • mini 包很小,方便集成
  • 為了使用devTool,應該將mb demo目錄下的front_end拷貝到工程一份
  • 為了使用插件,應該將mb demo目錄下的plugins拷貝到工程一份
  • js 調用C++函數并返回值

  • 遵循WKE_CALL_TYPE 調用方式
  • 遵循函數原型 jsValue WKE_CALL_TYPE xxxFun(jsExecState es, void* param)
  • //函數標準必須遵守WKE_CALL_TYPE 調用方式 jsValue WKE_CALL_TYPE OnMsg(jsExecState es, void* param) {//獲取參數個數jsArgCountif (0 == jsArgCount(es))return jsUndefined();//獲取約定的參數,例如獲取第一個參數,并假設參數為string,如果不是string則返回jsValue arg0 = jsArg(es, 0);//jsType type = jsArgType(es, 0);//if (JSTYPE_STRING != type) return jsUndefined();if (!jsIsString(arg0))return jsUndefined();path = jsToTempString(es, arg0);//同理獲取更多參數//返回約定返回值 or Undefined//return jsStringW(L"OK");return jsInt(); }
  • js綁定C++函數
  • #param1:js中調用的函數名稱 #param2:c++中實現的的函數 #param3:自定義參數,對應OnMsg中的void* param #param4:約定onMsg中需要輸入的參數個數,可隨便定義,但是在調用過程應該解析參數個數和類型#綁定之后所有webview的js都可以調用eMsg,包括新打開的webview #注意第三個參數void* param,如果默認和當前創建的webview綁定 #如果當前webview不調用wkeJsBindFunction,則繼承上一次的wkeJsBindFunction調用 wkeJsBindFunction("eMsg", &onMsg, nullptr, 5);
  • js中調用綁定函數
  • <button onclick="eMsg('add')">js Call C++ function</button>

    c++ 調用js函數并獲取返回值

  • js中聲明函數,eg:js_add
  • function js_add(v1,v2){return v1 + v2;}
  • C++通過jsCallGlobal調用js_add
  • int callJSAdd(wkeWebView webview) {jsExecState es = wkeGlobalExec(webview);jsValue f = jsGetGlobal(es, "js_add");if (jsIsFunction(f)){return -1;}jsValue jVal[2];jVal[0] = jsInt(1);jVal[1] = jsInt(2);jsValue callRet = jsCallGlobal(es, f, jVal, 2);return jsToInt(es, callRet); }

    顯示DevTool

    #param1:wkeWebView 實例 #param2:調試器的路徑,即front_end/inspector.htmlwkeShowDevtools(m_wkWebView, szPath, 0, 0); void CMbWebView::ShowDevTool() {wchar_t szPath[MAX_PATH] = _T("");GetModuleFileNameW(NULL, szPath, MAX_PATH);PathRemoveFileSpecW(szPath);PathAppendW(szPath, L"front_end");PathAppendW(szPath, L"inspector.html");if (_waccess(szPath, 00) != 0){wchar_t szBuf[1024] = L"";_snwprintf_s<1024>(szBuf, 1024, L"調試工具[%s]不存在", szPath);MessageBoxW(GetHwnd(), szBuf, L"錯誤提示", MB_OK);}else{wkeShowDevtools(m_wkWebView, szPath, 0, 0);} }

    其他的更多功能直接參考官方的mb demo。

    總結

    以上是生活随笔為你收集整理的Miniblink 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。