⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plugin.h

📁 VLC Player Source Code
💻 H
字号:
/***************************************************************************** * plugin.h: ActiveX control for VLC ***************************************************************************** * Copyright (C) 2005 the VideoLAN team * * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/#ifndef __PLUGIN_H__#define __PLUGIN_H__#include <ole2.h>#include <olectl.h>#include <vlc/vlc.h>extern "C" const GUID CLSID_VLCPlugin;extern "C" const GUID CLSID_VLCPlugin2;extern "C" const GUID LIBID_AXVLC;extern "C" const GUID DIID_DVLCEvents;class VLCPluginClass : public IClassFactory{public:    VLCPluginClass(LONG *p_class_ref, HINSTANCE hInstance, REFCLSID rclsid);    /* IUnknown methods */    STDMETHODIMP QueryInterface(REFIID riid, void **ppv);    STDMETHODIMP_(ULONG) AddRef(void);    STDMETHODIMP_(ULONG) Release(void);    /* IClassFactory methods */    STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppv);    STDMETHODIMP LockServer(BOOL fLock);    REFCLSID getClassID(void) { return (REFCLSID)_classid; };    LPCTSTR getInPlaceWndClassName(void) const { return TEXT("VLC Plugin In-Place"); };    HINSTANCE getHInstance(void) const { return _hinstance; };    LPPICTURE getInPlacePict(void) const        { if( NULL != _inplace_picture) _inplace_picture->AddRef(); return _inplace_picture; };protected:    virtual ~VLCPluginClass();private:    LPLONG      _p_class_ref;    HINSTANCE   _hinstance;    CLSID       _classid;    ATOM        _inplace_wndclass_atom;    LPPICTURE   _inplace_picture;};class VLCPlugin : public IUnknown{public:    VLCPlugin(VLCPluginClass *p_class, LPUNKNOWN pUnkOuter);    /* IUnknown methods */    STDMETHODIMP QueryInterface(REFIID riid, void **ppv);    STDMETHODIMP_(ULONG) AddRef(void);    STDMETHODIMP_(ULONG) Release(void);    /* custom methods */    HRESULT getTypeLib(LCID lcid, ITypeLib **pTL) { return LoadRegTypeLib(LIBID_AXVLC, 1, 0, lcid, pTL); };    REFCLSID getClassID(void) { return _p_class->getClassID(); };    REFIID getDispEventID(void) { return (REFIID)DIID_DVLCEvents; };    /*    ** persistant properties    */    void setMRL(BSTR mrl)    {        SysFreeString(_bstr_mrl);        _bstr_mrl = SysAllocStringLen(mrl, SysStringLen(mrl));        setDirty(TRUE);    };    const BSTR getMRL(void) { return _bstr_mrl; };    inline void setAutoPlay(BOOL autoplay)    {        _b_autoplay = autoplay;        setDirty(TRUE);    };    inline BOOL getAutoPlay(void) { return _b_autoplay; };    inline void setAutoLoop(BOOL autoloop)    {        _b_autoloop = autoloop;        setDirty(TRUE);    };    inline BOOL getAutoLoop(void) { return _b_autoloop;};    inline void setShowToolbar(BOOL showtoolbar)    {        _b_toolbar = showtoolbar;        setDirty(TRUE);    };    inline BOOL getShowToolbar(void) { return _b_toolbar;};    void setVolume(int volume);    int getVolume(void) { return _i_volume; };    void setBackColor(OLE_COLOR backcolor);    OLE_COLOR getBackColor(void) { return _i_backcolor; };    void setVisible(BOOL fVisible);    BOOL getVisible(void) { return _b_visible; };    BOOL isVisible(void) { return _b_visible || (! _b_usermode); };    inline void setStartTime(int time)    {        _i_time = time;        setDirty(TRUE);    };    inline int getStartTime(void) { return _i_time; };    void setTime(int time);    int  getTime(void) { return _i_time; };    void setBaseURL(BSTR url)    {        SysFreeString(_bstr_baseurl);        _bstr_baseurl = SysAllocStringLen(url, SysStringLen(url));        setDirty(TRUE);    };    const BSTR getBaseURL(void) { return _bstr_baseurl; };    // control size in HIMETRIC    inline void setExtent(const SIZEL& extent)    {        _extent = extent;        setDirty(TRUE);    };    const SIZEL& getExtent(void) { return _extent; };    // transient properties    inline void setMute(BOOL mute) { _b_mute = mute; };    inline void setPicture(LPPICTURE pict)    {        if( NULL != _p_pict )            _p_pict->Release();        if( NULL != pict )            _p_pict->AddRef();        _p_pict = pict;    };    inline LPPICTURE getPicture(void)    {        if( NULL != _p_pict )            _p_pict->AddRef();        return _p_pict;    };    BOOL hasFocus(void);    void setFocus(BOOL fFocus);    inline UINT getCodePage(void) { return _i_codepage; };    inline void setCodePage(UINT cp)    {        // accept new codepage only if it works on this system        size_t mblen = WideCharToMultiByte(cp,                0, L"test", -1, NULL, 0, NULL, NULL);        if( mblen > 0 )            _i_codepage = cp;    };    inline BOOL isUserMode(void) { return _b_usermode; };    inline void setUserMode(BOOL um) { _b_usermode = um; };    inline BOOL isDirty(void) { return _b_dirty; };    inline void setDirty(BOOL dirty) { _b_dirty = dirty; };    inline BOOL isRunning(void) { return NULL != _p_libvlc; };    HRESULT getVLC(libvlc_instance_t** p_vlc);    void setErrorInfo(REFIID riid, const char *description);    // control geometry within container    RECT getPosRect(void) { return _posRect; };    inline HWND getInPlaceWindow(void) const { return _inplacewnd; };    BOOL isInPlaceActive(void);    /*    ** container events    */    HRESULT onInit(void);    HRESULT onLoad(void);    HRESULT onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprcPosRect, LPCRECT lprcClipRect);    HRESULT onInPlaceDeactivate(void);    HRESULT onAmbientChanged(LPUNKNOWN pContainer, DISPID dispID);    HRESULT onClose(DWORD dwSaveOption);    void onPositionChange(LPCRECT lprcPosRect, LPCRECT lprcClipRect);    void onDraw(DVTARGETDEVICE * ptd, HDC hicTargetDev,            HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds);    void onPaint(HDC hdc, const RECT &bounds, const RECT &pr);    /*    ** control events    */    void freezeEvents(BOOL freeze);    void firePropChangedEvent(DISPID dispid);    void fireOnPlayEvent(void);    void fireOnPauseEvent(void);    void fireOnStopEvent(void);    // controlling IUnknown interface    LPUNKNOWN pUnkOuter;protected:    virtual ~VLCPlugin();private:    //implemented interfaces    class VLCOleObject *vlcOleObject;    class VLCOleControl *vlcOleControl;    class VLCOleInPlaceObject *vlcOleInPlaceObject;    class VLCOleInPlaceActiveObject *vlcOleInPlaceActiveObject;    class VLCPersistStreamInit *vlcPersistStreamInit;    class VLCPersistStorage *vlcPersistStorage;    class VLCPersistPropertyBag *vlcPersistPropertyBag;    class VLCProvideClassInfo *vlcProvideClassInfo;    class VLCConnectionPointContainer *vlcConnectionPointContainer;    class VLCObjectSafety *vlcObjectSafety;    class VLCControl *vlcControl;    class VLCControl2 *vlcControl2;    class VLCViewObject *vlcViewObject;    class VLCDataObject *vlcDataObject;    class VLCSupportErrorInfo *vlcSupportErrorInfo;    // in place activated window (Plugin window)    HWND _inplacewnd;    VLCPluginClass* _p_class;    ULONG _i_ref;    libvlc_instance_t* _p_libvlc;    UINT _i_codepage;    BOOL _b_usermode;    RECT _posRect;    LPPICTURE _p_pict;    // persistable properties    BSTR _bstr_baseurl;    BSTR _bstr_mrl;    BOOL _b_autoplay;    BOOL _b_autoloop;    BOOL _b_toolbar;    BOOL _b_visible;    BOOL _b_mute;    int  _i_volume;    int  _i_time;    SIZEL _extent;    OLE_COLOR _i_backcolor;    // indicates whether properties needs persisting    BOOL _b_dirty;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -