]> git.sesse.net Git - vlc/blob - activex/olecontrol.cpp
* small fix to the handling of the new nib-files (we are using the >= 10.2 format...
[vlc] / activex / olecontrol.cpp
1 /*****************************************************************************\r
2  * olecontrol.cpp: 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 #include "plugin.h"\r
24 #include "olecontrol.h"\r
25 \r
26 #include "utils.h"\r
27 \r
28 using namespace std;\r
29 \r
30 STDMETHODIMP VLCOleControl::GetControlInfo(CONTROLINFO *pCI)\r
31 {\r
32     if( NULL == pCI )\r
33         return E_POINTER;\r
34 \r
35     pCI->cb      = sizeof(CONTROLINFO);\r
36     pCI->hAccel  = NULL;\r
37     pCI->cAccel  = 0;\r
38     pCI->dwFlags = 0;\r
39 \r
40     return S_OK;\r
41 };\r
42 \r
43 STDMETHODIMP VLCOleControl::OnMnemonic(LPMSG pMsg)\r
44 {\r
45     return E_NOTIMPL;\r
46 };\r
47 \r
48 static HRESULT getAmbientProperty(VLCPlugin& instance, DISPID dispID, VARIANT& v)\r
49 {\r
50     HRESULT hr;\r
51     IOleObject *oleObj;\r
52 \r
53     hr = instance.QueryInterface(IID_IOleObject, (LPVOID *)&oleObj);\r
54     if( SUCCEEDED(hr) )\r
55     {\r
56         IOleClientSite *clientSite;\r
57 \r
58         hr = oleObj->GetClientSite(&clientSite);\r
59         if( SUCCEEDED(hr) && (NULL != clientSite) )\r
60         {\r
61             hr = GetObjectProperty(clientSite, dispID, v);\r
62             clientSite->Release();\r
63         }\r
64         oleObj->Release();\r
65     }\r
66     return hr;\r
67 };\r
68 \r
69 STDMETHODIMP VLCOleControl::OnAmbientPropertyChange(DISPID dispID)\r
70 {\r
71     switch( dispID )\r
72     {\r
73         case DISPID_AMBIENT_BACKCOLOR:\r
74             break;\r
75         case DISPID_AMBIENT_DISPLAYNAME:\r
76             break;\r
77         case DISPID_AMBIENT_FONT:\r
78             break;\r
79         case DISPID_AMBIENT_FORECOLOR:\r
80             break;\r
81         case DISPID_AMBIENT_LOCALEID:\r
82             break;\r
83         case DISPID_AMBIENT_MESSAGEREFLECT:\r
84             break;\r
85         case DISPID_AMBIENT_SCALEUNITS:\r
86             break;\r
87         case DISPID_AMBIENT_TEXTALIGN:\r
88             break;\r
89         case DISPID_AMBIENT_USERMODE:\r
90             break;\r
91         case DISPID_AMBIENT_UIDEAD:\r
92             break;\r
93         case DISPID_AMBIENT_SHOWGRABHANDLES:\r
94             break;\r
95         case DISPID_AMBIENT_SHOWHATCHING:\r
96             break;\r
97         case DISPID_AMBIENT_DISPLAYASDEFAULT:\r
98             break;\r
99         case DISPID_AMBIENT_SUPPORTSMNEMONICS:\r
100             break;\r
101         case DISPID_AMBIENT_AUTOCLIP:\r
102             break;\r
103         case DISPID_AMBIENT_APPEARANCE:\r
104             break;\r
105         case DISPID_AMBIENT_CODEPAGE:\r
106             VARIANT v;\r
107             VariantInit(&v);\r
108             V_VT(&v) = VT_I4;\r
109             if( SUCCEEDED(getAmbientProperty(*_p_instance, dispID, v)) )\r
110             {\r
111                 _p_instance->setCodePage(V_I4(&v));\r
112             }\r
113             break;\r
114         case DISPID_AMBIENT_PALETTE:\r
115             break;\r
116         case DISPID_AMBIENT_CHARSET:\r
117             break;\r
118         case DISPID_AMBIENT_RIGHTTOLEFT:\r
119             break;\r
120         case DISPID_AMBIENT_TOPTOBOTTOM:\r
121             break;\r
122         default:\r
123             break;\r
124     }\r
125     return S_OK;\r
126 };\r
127 \r
128 STDMETHODIMP VLCOleControl::FreezeEvents(BOOL bFreeze)\r
129 {\r
130     _p_instance->setSendEvents(! bFreeze);\r
131     return S_OK;\r
132 };\r
133 \r