Skip to content

WindowTem API

#include "webview/window_tem.hpp"。Window 之上的糖衣基类,组合 shared_ptr<Window>

构造

cpp
WindowTem(std::shared_ptr<Window> win, uint64_t timeoutMs = 300000);

超时默认 300s(对标 TS TIMEOUT_TIME)。

emit 白名单

cpp
void emits(std::vector<std::string> names);

声明可 send 的通道。未声明通道 send 抛异常

RPC

方法说明
on(name, fn)注册槽(同 Bridge)
send(name, args...)同步泵 + 超时 + 重入守卫(白名单校验)
bridge()底层 Bridge(fire-and-forget 广播)

内置槽

构造自动绑,前端固定通道名:

通道参数说明
handleWindowBtn{type: "min"|"close"|"topic"}最小化/关闭/置顶切换
moveWindow{x, y}frameless 自绘拖动

虚钩子

cpp
virtual void initBridge();   // start() 触发,绑槽时机
virtual void onMounted();    // 页面 DidFinishLoad 后

start

cpp
void start();   // 幂等:initBridge() + DidFinishLoad→onMounted()

构造完子类后调一次。

生命期

DANGER

WindowTem 必须先于其 Window 销毁(DidFinishLoad 回调捕获 this,EventBus 无 unsubscribe)。

继承式

cpp
class MainWindow : public webview::WindowTem {
public:
    using webview::WindowTem::WindowTem;
    void initBridge() override {
        emits({"downloadCb"});
        on("getWindowInfo", &MainWindow::getWindowInfo);
    }
private:
    webview::json getWindowInfo() { return /* */; }
};

auto w = std::make_shared<MainWindow>(win);
w->start();