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

📄 mpcontainer.h

📁 media player 控件源码 用EVC编译可以进行对WINCE下media player控制
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
///////////////////////////////////////////////////////////////////////////////
// File: mpcontainer.h
//
// Desc: This class defines an ActiveX container class for the Windows Media
//       Player ActiveX control.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _MPCONTAINER_H_
#define _MPCONTAINER_H_

#include <oaidl.h>
#include <ocidl.h>
#include <oleidl.h>

#include <dxmplay.h>

class CMPContainer : public IDispatch,
                            IErrorInfo,
                            IOleClientSite,
                            IOleContainer,
                            IOleControlSite,
                            IOleInPlaceFrame,
                            IOleInPlaceSiteWindowless
{
 public:
   // Constructor/Destructor
   CMPContainer();
   ~CMPContainer();

   bool Init();
   bool Fini();

   // IUnknown Methods
   STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObj);
   STDMETHODIMP_(ULONG) AddRef(void);
   STDMETHODIMP_(ULONG) Release(void);

   // IDispatch Methods
   STDMETHOD (GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int uiNames, LCID lcid, DISPID FAR* rgdispid);
   STDMETHOD (GetTypeInfo)(unsigned int uiTInfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
   STDMETHOD (GetTypeInfoCount)(unsigned int FAR* puiTInfo);
   STDMETHOD (Invoke)(DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR *pdispparams, VARIANT FAR *pvarResult, EXCEPINFO FAR* pexecinfo, unsigned int FAR* puArgErr);

   // IErrorInfo Methods
   STDMETHOD (GetGUID)(GUID *pGUID);
   STDMETHOD (GetSource)(BSTR *pstrDescription);
   STDMETHOD (GetDescription)(BSTR *pstrDescription);
   STDMETHOD (GetHelpFile)(BSTR *pstrHelpFile);
   STDMETHOD (GetHelpContext)(DWORD *pdwHelpContext);

   // IOleClientSite Methods
   STDMETHOD (SaveObject)();
   STDMETHOD (GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER *ppmk);
   STDMETHOD (GetContainer)(LPOLECONTAINER *ppContainer);
   STDMETHOD (ShowObject)();
   STDMETHOD (OnShowWindow)(BOOL fShow);
   STDMETHOD (RequestNewObjectLayout)();

   // IParseDisplayName Methods
   STDMETHOD (ParseDisplayName)(IBindCtx *pbc, LPOLESTR pszDisplayName, ULONG *pulEaten, IMoniker **ppmkOut);

   // IOleContainer Methods
   STDMETHOD (EnumObjects)(DWORD grfFlags, IEnumUnknown **ppenum);
   STDMETHOD (LockContainer)(BOOL fLock);

   // IOleControlSite Methods
   STDMETHOD (OnControlInfoChanged)();
   STDMETHOD (LockInPlaceActive)(BOOL fLock);
   STDMETHOD (GetExtendedControl)(IDispatch **ppDisp);
   STDMETHOD (TransformCoords)(POINTL *pptHimetric, POINTF *pptfContainer, DWORD dwFlags);
   STDMETHOD (TranslateAccelerator)(LPMSG pMsg, DWORD grfModifiers);
   STDMETHOD (OnFocus)(BOOL fGotFocus);
   STDMETHOD (ShowPropertyFrame)();

   // IOleWindow
   STDMETHOD (GetWindow)(HWND *phWnd);
   STDMETHOD (ContextSensitiveHelp)(BOOL fEnterMode);

   // IOleInPlaceUIWindow Methods
   STDMETHOD (GetBorder)(LPRECT lprectBorder);
   STDMETHOD (RequestBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
   STDMETHOD (SetBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
   STDMETHOD (SetActiveObject)(IOleInPlaceActiveObject *pActiveObject, LPCOLESTR lpszObjName);

   // IOleInPlaceFrame Methods
   STDMETHOD (InsertMenus)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
   STDMETHOD (SetMenu)(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActivateObject);
   STDMETHOD (RemoveMenus)(HMENU hmenuShared);
   STDMETHOD (SetStatusText)(LPCOLESTR pszStatusText);
   STDMETHOD (EnableModeless)(BOOL fEnable);
   STDMETHOD (TranslateAccelerator)(LPMSG lpmsg, WORD wID);

   // IOleInPlaceSite Methods
   STDMETHOD (CanInPlaceActivate)();
   STDMETHOD (OnInPlaceActivate)();
   STDMETHOD (OnUIActivate)();
   STDMETHOD (GetWindowContext)(IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo);
   STDMETHOD (Scroll)(SIZE scrollExtent);
   STDMETHOD (OnUIDeactivate)(BOOL fUndoable);
   STDMETHOD (OnInPlaceDeactivate)();
   STDMETHOD (DiscardUndoState)();
   STDMETHOD (DeactivateAndUndo)();
   STDMETHOD (OnPosRectChange)(LPCRECT lprcPosRect);

   // IOleInPlaceSiteEx Methods
   STDMETHOD (OnInPlaceActivateEx)(BOOL *pfNoRedraw, DWORD dwFlags);
   STDMETHOD (OnInPlaceDeactivateEx)(BOOL fNoRedraw);
   STDMETHOD (RequestUIActivate)();

   // IOleInPlaceSiteWindowless Methods
   STDMETHOD (CanWindowlessActivate)();
   STDMETHOD (GetCapture)();
   STDMETHOD (SetCapture)(BOOL fCapture);
   STDMETHOD (GetFocus)();
   STDMETHOD (SetFocus)(BOOL fFocus);
   STDMETHOD (GetDC)(LPCRECT pRect, DWORD grfFlags, HDC *phDC);
   STDMETHOD (ReleaseDC)(HDC hDC);
   STDMETHOD (InvalidateRect)(LPCRECT pRect, BOOL fErase);
   STDMETHOD (InvalidateRgn)(HRGN hRGN, BOOL fErase);
   STDMETHOD (ScrollRect)(INT dx, INT dy, LPCRECT pRectScroll, LPCRECT pRectClip);
   STDMETHOD (AdjustRect)(LPRECT prc);
   STDMETHOD (OnDefWindowMessage)(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult);

   //////
   // CMPContainer Methods
   HRESULT CreateControl(REFIID rclsid);
   HRESULT DestroyControl();
   HRESULT SetWindow(HWND hWnd);

   void    Show(int iShow);
   void    Paint(HDC hDC, RECT *pRect);
   void    UpdateDisplay();

   HRESULT OpenFile(TCHAR *szFilename);
   HRESULT Close();
   HRESULT Play();
   HRESULT Pause();
   HRESULT Stop();
   HRESULT Mute();
   HRESULT Repeat();

   bool IsRepeating();

   IMediaPlayer                *m_pMP;

 protected:
   unsigned long                m_ulRef;
   HWND                         m_hWnd;
   RECT                         m_rcPos;
   IUnknown                    *m_pUnk;
   IOleInPlaceObjectWindowless *m_pIPOW;
   IOleInPlaceObject           *m_pIPO;
   DWORD                        m_dwLevelOfControls; // 0 for minimal, 1 for compact, 2 for standard

 private:
};

#endif /* _MPCONTAINER_H_ */

⌨️ 快捷键说明

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