olecontrol.cpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * olecontrol.cpp: ActiveX control for VLC
  3.  *****************************************************************************
  4.  * Copyright (C) 2005 the VideoLAN team
  5.  *
  6.  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  21.  *****************************************************************************/
  22. #include "plugin.h"
  23. #include "olecontrol.h"
  24. using namespace std;
  25. STDMETHODIMP VLCOleControl::GetControlInfo(CONTROLINFO *pCI)
  26. {
  27.     if( NULL == pCI )
  28.         return E_POINTER;
  29.     pCI->cb      = sizeof(CONTROLINFO);
  30.     pCI->hAccel  = NULL;
  31.     pCI->cAccel  = 0;
  32.     pCI->dwFlags = 0;
  33.     return S_OK;
  34. };
  35. STDMETHODIMP VLCOleControl::OnMnemonic(LPMSG pMsg)
  36. {
  37.     return S_OK;
  38. };
  39. STDMETHODIMP VLCOleControl::OnAmbientPropertyChange(DISPID dispID)
  40. {
  41.     HRESULT hr;
  42.     LPOLEOBJECT oleObj;
  43.     hr = QueryInterface(IID_IOleObject, (LPVOID *)&oleObj);
  44.     if( SUCCEEDED(hr) )
  45.     {
  46.         LPOLECLIENTSITE clientSite;
  47.         hr = oleObj->GetClientSite(&clientSite);
  48.         if( SUCCEEDED(hr) && (NULL != clientSite) )
  49.         {
  50.             _p_instance->onAmbientChanged(clientSite, dispID);
  51.             clientSite->Release();
  52.         }
  53.         oleObj->Release();
  54.     }
  55.     return S_OK;
  56. };
  57. STDMETHODIMP VLCOleControl::FreezeEvents(BOOL bFreeze)
  58. {
  59.     _p_instance->freezeEvents(bFreeze);
  60.     return S_OK;
  61. };