2013-11-09 1 views
0

Я пытаюсь разработать плагин с Firebreath. Я мог бы сослаться на образец и создать тестовый плагин. Теперь я решил создать часть пользовательского интерфейса с LIBSDL.Создание плагина с FireBreath и Libsdl

Когда я создал окно с использованием SDL, он создает новое окно, то есть окно за пределами браузера.

Возможно ли создать окно внутри области плагина с использованием LIBSDL?

+0

Я не знаком с СВД, так что я не знаю, но то, что вам нужно сделать, это создать SDL-окно, которое было дочерним окном HWND плагина. Кроме того, посмотрите, можете ли вы найти способ создания окна, а затем передать его в SDL для использования – taxilian

+0

Спасибо Taxilian. Если я использую окно SDL в качестве дочернего окна HWND плагина, могу ли я использовать его на всех платформах, таких как Mac и unix? –

+0

Не могли бы вы предложить мне библиотеку для создания пользовательского интерфейса в плагине firebreath, которая может быть одобрена на всех платформах? –

ответ

0

Да, в sdl 1.2.15 вы можете установить переменную среды с именем SDL_WINDOWID, значение которой затем используется в sdl. Предполагая, что вы используете окна в вашем 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; 
}