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