Click here to Skip to main content
15,886,199 members
Articles / Desktop Programming / MFC

Using screensavers inside the Windows Media Player

Rate me:
Please Sign up or sign in to vote.
4.94/5 (12 votes)
15 Jul 2011CPOL1 min read 107.9K   3.1K   53  
Wrapping a screensaver inside a WMP visualization plug-in.

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 6.00.0365 */
/* Compiler settings for wmpplug.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING(  )

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __wmpplug_h__
#define __wmpplug_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IWMPPluginUI_FWD_DEFINED__
#define __IWMPPluginUI_FWD_DEFINED__
typedef interface IWMPPluginUI IWMPPluginUI;
#endif 	/* __IWMPPluginUI_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "wmp.h"

#ifdef __cplusplus
extern "C"{
#endif 

void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * ); 

/* interface __MIDL_itf_wmpplug_0000 */
/* [local] */ 

//=========================================================================
//
// Microsoft Windows Media Technologies
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//=========================================================================
#define PLUGIN_INSTALLREGKEY                L"Software\\Microsoft\\MediaPlayer\\UIPlugins"
#define PLUGIN_INSTALLREGKEY_FRIENDLYNAME   L"FriendlyName"
#define PLUGIN_INSTALLREGKEY_DESCRIPTION    L"Description"
#define PLUGIN_INSTALLREGKEY_CAPABILITIES   L"Capabilities"
#define PLUGIN_INSTALLREGKEY_UNINSTALL      L"UninstallPath"
#define	PLUGIN_TYPE_BACKGROUND	( 0x1 )

#define	PLUGIN_TYPE_SEPARATEWINDOW	( 0x2 )

#define	PLUGIN_TYPE_DISPLAYAREA	( 0x3 )

#define	PLUGIN_TYPE_SETTINGSAREA	( 0x4 )

#define	PLUGIN_TYPE_METADATAAREA	( 0x5 )

#define	PLUGIN_FLAGS_HASPROPERTYPAGE	( 0x80000000 )

#define	PLUGIN_FLAGS_INSTALLAUTORUN	( 0x40000000 )

#define	PLUGIN_FLAGS_LAUNCHPROPERTYPAGE	( 0x20000000 )

#define	PLUGIN_FLAGS_ACCEPTSMEDIA	( 0x10000000 )

#define	PLUGIN_FLAGS_ACCEPTSPLAYLISTS	( 0x8000000 )

#define	PLUGIN_FLAGS_HASPRESETS	( 0x4000000 )

#define	PLUGIN_FLAGS_HIDDEN	( 0x2000000 )

#define PLUGIN_MISC_PRESETCOUNT      L"PresetCount"
#define PLUGIN_MISC_PRESETNAMES      L"PresetNames"
#define PLUGIN_MISC_CURRENTPRESET    L"CurrentPreset"
#define PLUGIN_SEPARATEWINDOW_RESIZABLE     L"Resizable"
#define PLUGIN_SEPARATEWINDOW_DEFAULTWIDTH  L"DefaultWidth"
#define PLUGIN_SEPARATEWINDOW_DEFAULTHEIGHT L"DefaultHeight"
#define PLUGIN_SEPARATEWINDOW_MINWIDTH      L"MinWidth"
#define PLUGIN_SEPARATEWINDOW_MINHEIGHT     L"MinHeight"
#define PLUGIN_SEPARATEWINDOW_MAXWIDTH      L"MaxWidth"
#define PLUGIN_SEPARATEWINDOW_MAXHEIGHT     L"MaxHeight"
#define PLUGIN_MISC_QUERYDESTROY            L"QueryDestroy"
#define PLUGIN_ALL_MEDIASENDTO              L"MediaSendTo"
#define PLUGIN_ALL_PLAYLISTSENDTO           L"PlaylistSendTo"
__inline BOOL WMPNotifyPluginAddRemove()
{
    return( ::PostMessage( HWND_BROADCAST, ::RegisterWindowMessageA( "WMPlayer_PluginAddRemove" ), 0, 0 ) );
}


extern RPC_IF_HANDLE __MIDL_itf_wmpplug_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_wmpplug_0000_v0_0_s_ifspec;

#ifndef __IWMPPluginUI_INTERFACE_DEFINED__
#define __IWMPPluginUI_INTERFACE_DEFINED__

/* interface IWMPPluginUI */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWMPPluginUI;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4C5E8F9F-AD3E-4bf9-9753-FCD30D6D38DD")
    IWMPPluginUI : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetCore( 
            /* [in] */ IWMPCore *pCore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Create( 
            /* [in] */ HWND hwndParent,
            /* [out] */ HWND *phwndWindow) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Destroy( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DisplayPropertyPage( 
            /* [in] */ HWND hwndParent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProperty( 
            /* [in] */ const WCHAR *pwszName,
            /* [out] */ VARIANT *pvarProperty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetProperty( 
            /* [in] */ const WCHAR *pwszName,
            /* [in] */ const VARIANT *pvarProperty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( 
            /* [in] */ LPMSG lpmsg) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMPPluginUIVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMPPluginUI * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMPPluginUI * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMPPluginUI * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetCore )( 
            IWMPPluginUI * This,
            /* [in] */ IWMPCore *pCore);
        
        HRESULT ( STDMETHODCALLTYPE *Create )( 
            IWMPPluginUI * This,
            /* [in] */ HWND hwndParent,
            /* [out] */ HWND *phwndWindow);
        
        HRESULT ( STDMETHODCALLTYPE *Destroy )( 
            IWMPPluginUI * This);
        
        HRESULT ( STDMETHODCALLTYPE *DisplayPropertyPage )( 
            IWMPPluginUI * This,
            /* [in] */ HWND hwndParent);
        
        HRESULT ( STDMETHODCALLTYPE *GetProperty )( 
            IWMPPluginUI * This,
            /* [in] */ const WCHAR *pwszName,
            /* [out] */ VARIANT *pvarProperty);
        
        HRESULT ( STDMETHODCALLTYPE *SetProperty )( 
            IWMPPluginUI * This,
            /* [in] */ const WCHAR *pwszName,
            /* [in] */ const VARIANT *pvarProperty);
        
        HRESULT ( STDMETHODCALLTYPE *TranslateAccelerator )( 
            IWMPPluginUI * This,
            /* [in] */ LPMSG lpmsg);
        
        END_INTERFACE
    } IWMPPluginUIVtbl;

    interface IWMPPluginUI
    {
        CONST_VTBL struct IWMPPluginUIVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMPPluginUI_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IWMPPluginUI_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IWMPPluginUI_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IWMPPluginUI_SetCore(This,pCore)	\
    (This)->lpVtbl -> SetCore(This,pCore)

#define IWMPPluginUI_Create(This,hwndParent,phwndWindow)	\
    (This)->lpVtbl -> Create(This,hwndParent,phwndWindow)

#define IWMPPluginUI_Destroy(This)	\
    (This)->lpVtbl -> Destroy(This)

#define IWMPPluginUI_DisplayPropertyPage(This,hwndParent)	\
    (This)->lpVtbl -> DisplayPropertyPage(This,hwndParent)

#define IWMPPluginUI_GetProperty(This,pwszName,pvarProperty)	\
    (This)->lpVtbl -> GetProperty(This,pwszName,pvarProperty)

#define IWMPPluginUI_SetProperty(This,pwszName,pvarProperty)	\
    (This)->lpVtbl -> SetProperty(This,pwszName,pvarProperty)

#define IWMPPluginUI_TranslateAccelerator(This,lpmsg)	\
    (This)->lpVtbl -> TranslateAccelerator(This,lpmsg)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IWMPPluginUI_SetCore_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ IWMPCore *pCore);


void __RPC_STUB IWMPPluginUI_SetCore_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_Create_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ HWND hwndParent,
    /* [out] */ HWND *phwndWindow);


void __RPC_STUB IWMPPluginUI_Create_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_Destroy_Proxy( 
    IWMPPluginUI * This);


void __RPC_STUB IWMPPluginUI_Destroy_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_DisplayPropertyPage_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ HWND hwndParent);


void __RPC_STUB IWMPPluginUI_DisplayPropertyPage_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_GetProperty_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ const WCHAR *pwszName,
    /* [out] */ VARIANT *pvarProperty);


void __RPC_STUB IWMPPluginUI_GetProperty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_SetProperty_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ const WCHAR *pwszName,
    /* [in] */ const VARIANT *pvarProperty);


void __RPC_STUB IWMPPluginUI_SetProperty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IWMPPluginUI_TranslateAccelerator_Proxy( 
    IWMPPluginUI * This,
    /* [in] */ LPMSG lpmsg);


void __RPC_STUB IWMPPluginUI_TranslateAccelerator_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IWMPPluginUI_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  HWND_UserSize(     unsigned long *, unsigned long            , HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal(  unsigned long *, unsigned char *, HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * ); 
void                      __RPC_USER  HWND_UserFree(     unsigned long *, HWND * ); 

unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long *, unsigned long            , VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsigned char *, VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree(     unsigned long *, VARIANT * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Australia Australia
Developing windows applications for over 15 years now starting on Win 3.1 with Object Oriented Pascal, progressed to C++ and OWL, in 1996 switch to MFC and never looked back, now focusing on .NET/Mono.

Comments and Discussions