70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
#ifndef NULLSOFT_PODCAST_PLUGIN_SERVICE_HEADER
|
|
#define NULLSOFT_PODCAST_PLUGIN_SERVICE_HEADER
|
|
|
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
#pragma once
|
|
#endif
|
|
|
|
#include <wtypes.h>
|
|
#include <atomic>
|
|
|
|
#include "../omBrowser/ifc_omservice.h"
|
|
|
|
class OmService;
|
|
typedef HWND (CALLBACK *SVCWNDCREATEPROC)(HWND /*hParent*/, OmService* /*service*/);
|
|
|
|
class OmService : public ifc_omservice
|
|
{
|
|
public:
|
|
typedef enum
|
|
{
|
|
flagRoot = 0x00000001,
|
|
flagLocal = 0x00000002,
|
|
} Flags;
|
|
|
|
protected:
|
|
OmService( UINT nId );
|
|
~OmService();
|
|
|
|
public:
|
|
static HRESULT CreateRemote( UINT nId, LPCWSTR pszName, LPCWSTR pszIcon, LPCWSTR pszUrl, OmService **instance );
|
|
static HRESULT CreateLocal( UINT nId, LPCWSTR pszName, LPCWSTR pszIcon, SVCWNDCREATEPROC windowCreator, OmService **instance );
|
|
|
|
/* Dispatchable */
|
|
size_t AddRef();
|
|
size_t Release();
|
|
int QueryInterface( GUID interface_guid, void **object );
|
|
|
|
/* ifc_omservice */
|
|
unsigned int GetId();
|
|
HRESULT GetName( wchar_t *pszBuffer, int cchBufferMax );
|
|
HRESULT GetUrl( wchar_t *pszBuffer, int cchBufferMax );
|
|
HRESULT GetExternal( IDispatch **ppDispatch );
|
|
HRESULT GetIcon( wchar_t *pszBuffer, int cchBufferMax );
|
|
|
|
HRESULT SetName( LPCWSTR pszName );
|
|
HRESULT SetUrl( LPCWSTR pszUrl );
|
|
HRESULT SetIcon( LPCWSTR pszIcon );
|
|
|
|
void SetFlags( UINT mask, UINT newFlags );
|
|
UINT GetFlags( void );
|
|
|
|
HRESULT SetWindowCreator( SVCWNDCREATEPROC proc );
|
|
HRESULT GetWindowCreator( SVCWNDCREATEPROC *proc );
|
|
|
|
HRESULT CreateView( HWND hParent, HWND *hView );
|
|
|
|
protected:
|
|
RECVS_DISPATCH;
|
|
|
|
std::atomic<std::size_t> _ref = 1;
|
|
UINT id = 0;
|
|
LPWSTR name = NULL;
|
|
LPWSTR url = NULL;
|
|
SVCWNDCREATEPROC windowCreator = NULL;
|
|
LPWSTR icon = NULL;
|
|
UINT flags = 0;
|
|
};
|
|
|
|
#endif //NULLSOFT_PODCAST_PLUGIN_SERVICE_HEADER
|