]> git.sesse.net Git - vlc/blob - activex/oleobject.h
428e7f1dcea0927e3a33414c39d07007b6323502
[vlc] / activex / oleobject.h
1 /*****************************************************************************\r
2  * oleobject.h: ActiveX control for VLC\r
3  *****************************************************************************\r
4  * Copyright (C) 2005 VideoLAN\r
5  *\r
6  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
7  *\r
8  * This program is free software; you can redistribute it and/or modify\r
9  * it under the terms of the GNU General Public License as published by\r
10  * the Free Software Foundation; either version 2 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU General Public License\r
19  * along with this program; if not, write to the Free Software\r
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
21  *****************************************************************************/\r
22 \r
23 #ifndef __OLEOBJECT_H__\r
24 #define __OLEOBJECT_H__\r
25 \r
26 class VLCOleObject : public IOleObject\r
27 {\r
28 \r
29 public:\r
30 \r
31     VLCOleObject(VLCPlugin *p_instance);\r
32     virtual ~VLCOleObject();\r
33 \r
34     // IUnknown methods\r
35     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)\r
36     {\r
37         if( (NULL != ppv)\r
38          && (IID_IUnknown == riid)\r
39          && (IID_IOleObject == riid) ) \r
40         {\r
41             AddRef();\r
42             *ppv = reinterpret_cast<LPVOID>(this);\r
43             return NOERROR;\r
44         }\r
45         return _p_instance->QueryInterface(riid, ppv);\r
46     };\r
47 \r
48     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->AddRef(); };\r
49     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->Release(); };\r
50 \r
51     // IOleObject methods\r
52     STDMETHODIMP Advise(IAdviseSink *, LPDWORD);\r
53     STDMETHODIMP Close(DWORD);\r
54     STDMETHODIMP DoVerb(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);\r
55     STDMETHODIMP EnumAdvise(IEnumSTATDATA **);\r
56     STDMETHODIMP EnumVerbs(IEnumOleVerb **);\r
57     STDMETHODIMP GetClientSite(LPOLECLIENTSITE *);\r
58     STDMETHODIMP GetClipboardData(DWORD, LPDATAOBJECT *);\r
59     STDMETHODIMP GetExtent(DWORD, SIZEL *);\r
60     STDMETHODIMP GetMiscStatus(DWORD, DWORD *);\r
61     STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *);\r
62     STDMETHODIMP GetUserClassID(CLSID *);\r
63     STDMETHODIMP GetUserType(DWORD, LPOLESTR *);\r
64     STDMETHODIMP InitFromData(IDataObject *, BOOL, DWORD);\r
65     STDMETHODIMP IsUpToDate(void);\r
66     STDMETHODIMP SetClientSite(LPOLECLIENTSITE);\r
67     STDMETHODIMP SetColorScheme(LOGPALETTE *);\r
68     STDMETHODIMP SetExtent(DWORD, SIZEL *);\r
69     STDMETHODIMP SetHostNames(LPCOLESTR, LPCOLESTR) ;\r
70     STDMETHODIMP SetMoniker(DWORD, LPMONIKER);\r
71     STDMETHODIMP Unadvise(DWORD);\r
72     STDMETHODIMP Update(void);\r
73 \r
74 private:\r
75 \r
76     HRESULT doInPlaceActivate(LPMSG lpMsg, LPOLECLIENTSITE pActiveSite, HWND hwndParent, LPCRECT lprcPosRect);\r
77     HRESULT doUIActivate(LPMSG lpMsg, LPOLECLIENTSITE pActiveSite, HWND hwndParent, LPCRECT lprcPosRect);\r
78 \r
79     IOleAdviseHolder *_p_advise_holder;\r
80     IOleClientSite *_p_clientsite;\r
81 \r
82     VLCPlugin *_p_instance;\r
83 };\r
84 \r
85 #endif\r
86 \r