www.gusucode.com > 用VS2008+ATL开发可以显示Gif的ActiveX控件源码源码程序 > 用VS2008+ATL开发可以显示Gif的ActiveX控件源码/用VS2008+ATL开发Gif的ActiveX控件/用VS2008+ATL开发Gif的ActiveX控件/GifSolution/GifAnimate/GifAniAtlWindow.cpp
// GifAniAtlWindow.cpp : CGifAniAtlWindow 的实现 #include "stdafx.h" #include "GifAniAtlWindow.h" // CGifAniAtlWindow STDMETHODIMP CGifAniAtlWindow::Play(void) { VPR_E_FAIL(m_gif); m_gif->Play(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::Stop(void) { VPR_E_FAIL(m_gif); m_gif->Stop(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::Pause(void) { VPR_E_FAIL(m_gif); m_gif->Pause(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::Continue(void) { VPR_E_FAIL(m_gif); m_gif->Continue(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::PrevFrame(void) { VPR_E_FAIL(m_gif); m_gif->PrevFrame(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::NextFrame(void) { VPR_E_FAIL(m_gif); m_gif->NextFrame(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::IsPlaying(VARIANT_BOOL* bPlaying) { VPR_E_FAIL(m_gif); VPR_OUT_E_FAIL(bPlaying); *bPlaying = m_gif->IsPlaying(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::LoadGifFromFile(BSTR bstrFile) { VPR_E_FAIL(m_gif); if (m_gif->LoadGifFromFile(bstrFile)) return S_OK; return E_FAIL; } STDMETHODIMP CGifAniAtlWindow::LoadGifFromStream(IUnknown* pStream) { VPR_E_FAIL(m_gif); VPR_IN_E_FAIL(pStream); if (m_gif->LoadGifFromStream(pStream)) return S_OK; return E_FAIL; } STDMETHODIMP CGifAniAtlWindow::get_Loop(LONG* pVal) { VPR_E_FAIL(m_gif); VPR_OUT_E_FAIL(pVal); *pVal = m_gif->GetLoop(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::put_Loop(LONG newVal) { VPR_E_FAIL(m_gif); m_gif->PutLoop(newVal); return S_OK; } STDMETHODIMP CGifAniAtlWindow::get_DelayTimeFactor(DOUBLE* pVal) { VPR_E_FAIL(m_gif); *pVal = m_gif->GetDelayTimeFactor(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::put_DelayTimeFactor(DOUBLE newVal) { VPR_E_FAIL(m_gif); m_gif->PutDelayTimeFactor(newVal); return S_OK; } STDMETHODIMP CGifAniAtlWindow::get_PlayDirection(AniPlayDirection* pVal) { VPR_E_FAIL(m_gif); VPR_OUT_E_FAIL(pVal); *pVal = m_gif->GetPlayDirection(); return S_OK; } STDMETHODIMP CGifAniAtlWindow::put_PlayDirection(AniPlayDirection newVal) { VPR_E_FAIL(m_gif); m_gif->PutPlayDirection(newVal); return S_OK; } LRESULT CGifAniAtlWindow::OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // TODO: 在此添加消息处理程序代码和/或调用默认值 return 0; } LRESULT CGifAniAtlWindow::OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/) { WORD xPos = LOWORD(lParam); // horizontal position of cursor WORD yPos = HIWORD(lParam); // vertical position of cursor Fire_Click(xPos, yPos); return 0; }