使用FireBreath和Libsdl创建插件

时间:2013-11-09 09:41:45

标签: sdl firebreath

我正在尝试使用Firebreath开发一个插件。我可以参考示例并创建一个测试插件。现在我决定使用LIBSDL创建UI部分。

当我使用SDL创建窗口时,它会创建一个新窗口,即浏览器外部的窗口。

是否可以使用LIBSDL在插件区域内创建窗口?

1 个答案:

答案 0 :(得分:0)

是的,在sdl 1.2.15中,您可以设置一个名为SDL_WINDOWID的环境变量,然后在sdl中使用其值。 假设你正在使用windows,你可以在你的firebreath插件中执行:

bool YourPlugin::onWindowAttached(FB::AttachedEvent *evt, FB::PluginWindow *win)
{
    // The window is attached; act appropriately
    FB::PluginWindowWin *wnd = dynamic_cast<FB::PluginWindowWin*>(win);
    set_sdl_window (wnd->getHWND());
    // then run your code
    // ...
}

以及SDL客户端代码中的某个位置定义如下:

int set_sdl_window(HWND window)
{
    char windowid[20] = {0};
    char env[100] = {0};
    if (window != NULL) {
        SDL_ulltoa((Uint64)window, windowid, 10);
        sprintf(env, "SDL_WINDOWID=%s", windowid);
        SDL_putenv (env);
        return 0;
    }
    return 1;
}