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

📄 viewobject.cpp

📁 VLC Player Source Code
💻 CPP
字号:
/***************************************************************************** * viewobject.cpp: 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. *****************************************************************************/#include "plugin.h"#include "viewobject.h"#include "utils.h"using namespace std;STDMETHODIMP VLCViewObject::Draw(DWORD dwAspect, LONG lindex, PVOID pvAspect,        DVTARGETDEVICE *ptd, HDC hicTargetDev, HDC hdcDraw, LPCRECTL lprcBounds,        LPCRECTL lprcWBounds, BOOL(CALLBACK *pfnContinue)(DWORD), DWORD dwContinue){    if( dwAspect & DVASPECT_CONTENT )    {        if( NULL == lprcBounds )            return E_INVALIDARG;        BOOL releaseDC = FALSE;        SIZEL size = _p_instance->getExtent();        if( NULL == ptd )        {            hicTargetDev = CreateDevDC(NULL);            releaseDC = TRUE;        }        DPFromHimetric(hicTargetDev, (LPPOINT)&size, 1);        RECTL bounds = { 0L, 0L, size.cx, size.cy };        int sdc = SaveDC(hdcDraw);        SetMapMode(hdcDraw, MM_ANISOTROPIC);        SetWindowOrgEx(hdcDraw, 0, 0, NULL);        SetWindowExtEx(hdcDraw, size.cx, size.cy, NULL);        OffsetViewportOrgEx(hdcDraw, lprcBounds->left, lprcBounds->top, NULL);        SetViewportExtEx(hdcDraw, lprcBounds->right-lprcBounds->left,                lprcBounds->bottom-lprcBounds->top, NULL);        _p_instance->onDraw(ptd, hicTargetDev, hdcDraw, &bounds, lprcWBounds);        RestoreDC(hdcDraw, sdc);        if( releaseDC )            DeleteDC(hicTargetDev);        return S_OK;    }    return E_NOTIMPL;};STDMETHODIMP VLCViewObject::Freeze(DWORD dwAspect, LONG lindex,        PVOID pvAspect, LPDWORD pdwFreeze){    return E_NOTIMPL;};STDMETHODIMP VLCViewObject::GetAdvise(LPDWORD pdwAspect, LPDWORD padvf,        LPADVISESINK *ppAdviseSink){    if( NULL != pdwAspect )        *pdwAspect = _dwAspect;    if( NULL != padvf )        *padvf = _advf;    if( NULL != ppAdviseSink )    {        *ppAdviseSink = _pAdvSink;        if( NULL != _pAdvSink )            _pAdvSink->AddRef();    }    return S_OK;};STDMETHODIMP VLCViewObject::GetColorSet(DWORD dwAspect, LONG lindex,        PVOID pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LPLOGPALETTE *ppColorSet){    return S_FALSE;};STDMETHODIMP VLCViewObject::SetAdvise(DWORD dwAspect, DWORD advf,        LPADVISESINK pAdvSink){    if( NULL != pAdvSink )        pAdvSink->AddRef();    if( NULL != _pAdvSink )        _pAdvSink->Release();    _dwAspect = dwAspect;    _advf = advf;    _pAdvSink = pAdvSink;    if( (dwAspect & DVASPECT_CONTENT) && (advf & ADVF_PRIMEFIRST) && (NULL != _pAdvSink) )    {        _pAdvSink->OnViewChange(DVASPECT_CONTENT, -1);    }    return S_OK;};STDMETHODIMP VLCViewObject::Unfreeze(DWORD dwFreeze){    return E_NOTIMPL;};STDMETHODIMP VLCViewObject::GetExtent(DWORD dwAspect, LONG lindex,        DVTARGETDEVICE *ptd, LPSIZEL lpSizel){    if( dwAspect & DVASPECT_CONTENT )    {        *lpSizel = _p_instance->getExtent();        return S_OK;    }    lpSizel->cx= 0L;    lpSizel->cy= 0L;    return E_NOTIMPL;};

⌨️ 快捷键说明

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