Esempio n. 1
0
HRESULT touchmind::Context::_InitializeAnimation() {
#ifdef TOUCHMIND_CONTEXT_DEBUG
  LOG_ENTER;
#endif
  HRESULT hr = S_OK;
  hr = CoCreateInstance(CLSID_UIAnimationManager, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pAnimationManager));
  if (SUCCEEDED(hr)) {
    hr = CoCreateInstance(CLSID_UIAnimationTimer, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pAnimationTimer));
  }
  if (SUCCEEDED(hr)) {
    hr = CoCreateInstance(CLSID_UIAnimationTransitionLibrary, nullptr, CLSCTX_INPROC_SERVER,
                          IID_PPV_ARGS(&m_pTransitionLibrary));
  }
  IUIAnimationTimerUpdateHandler *pTimerUpdateHandler = nullptr;
  if (SUCCEEDED(hr)) {
    hr = m_pAnimationManager->QueryInterface(IID_PPV_ARGS(&pTimerUpdateHandler));
  }
  if (SUCCEEDED(hr)) {
    hr = m_pAnimationTimer->SetTimerUpdateHandler(
        pTimerUpdateHandler, UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE); // UI_ANIMATION_IDLE_BEHAVIOR_DISABLE
    pTimerUpdateHandler->Release();
  }
  IUIAnimationManagerEventHandler *pAnimationManagerEventHandler = nullptr;
  if (SUCCEEDED(hr)) {
    hr = touchmind::animation::AnimationManagerEventHandler::CreateInstance(m_animationStatusChangedListener,
                                                                            &pAnimationManagerEventHandler);
  }
  if (SUCCEEDED(hr)) {
    hr = m_pAnimationManager->SetManagerEventHandler(pAnimationManagerEventHandler);
    pAnimationManagerEventHandler->Release();
  }

  m_pAnimationTimer->Enable();
#ifdef TOUCHMIND_CONTEXT_DEBUG
  LOG_LEAVE_HRESULT(hr);
#endif
  return hr;
}
HRESULT CMainWindow::InitializeAnimation()
{
    // Create Animation Manager

    HRESULT hr = CoCreateInstance(
        CLSID_UIAnimationManager,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pAnimationManager)
        );
    if (SUCCEEDED(hr))
    {
        // Create Animation Timer

        hr = CoCreateInstance(
            CLSID_UIAnimationTimer,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_PPV_ARGS(&m_pAnimationTimer)
            );
        if (SUCCEEDED(hr))
        {
            // Create Animation Transition Library

            hr = CoCreateInstance(
                CLSID_UIAnimationTransitionLibrary,
                NULL,
                CLSCTX_INPROC_SERVER,
                IID_PPV_ARGS(&m_pTransitionLibrary)
                );
            if (SUCCEEDED(hr))
            {
                // Connect the animation manager to the timer.
                // UI_ANIMATION_IDLE_BEHAVIOR_DISABLE tells the timer to shut itself
                // off when there is nothing to animate.

                IUIAnimationTimerUpdateHandler *pTimerUpdateHandler;
                hr = m_pAnimationManager->QueryInterface(
                    IID_PPV_ARGS(&pTimerUpdateHandler)
                    );
                if (SUCCEEDED(hr))
                {
                    hr = m_pAnimationTimer->SetTimerUpdateHandler(
                        pTimerUpdateHandler,
                        UI_ANIMATION_IDLE_BEHAVIOR_DISABLE
                        );
                    pTimerUpdateHandler->Release();
                    if (SUCCEEDED(hr))
                    {
                        // Create and set the Timer Event Handler

                        IUIAnimationTimerEventHandler *pTimerEventHandler;
                        hr = CTimerEventHandler::CreateInstance(
                            this,
                            &pTimerEventHandler
                            );
                        if (SUCCEEDED(hr))
                        {
                            hr = m_pAnimationTimer->SetTimerEventHandler(
                                pTimerEventHandler
                                );
                            pTimerEventHandler->Release();
                        }
                    }
                }
            }
        }
    }
    
    return hr;
}