int Application::Create(IWindow &window, IScene &scene)
{
    assert( !MainWindow || MainWindow == &window );

    MainWindow = &window;

    // Create window - assume that window has been precreated
    if (! window.Create() )
    {
        Destroy();
        return WINDOW_ERROR;
    }

    // Call event
    bool res = true; OnApplicationCreate(res);
    if (!res)
    {
        Destroy();
        return EVENT_ERROR;
    }

    // Init window events
    SceneCur = &scene;
    window.OnCreate.Set(this, ::MainWindow_OnCreate);
    window.OnResize.Set(this, ::MainWindow_OnResize);

    // Create scene
    if (! SceneCur->Create(0, 0, window.Width_Get(), window.Height_Get()) )
    {
        Destroy();
        return SCENE_ERROR;
    }
    SceneCur->Enter();

    return SUCCESS;
}