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; }