]> git.sesse.net Git - vlc/blobdiff - activex/oleinplaceactiveobject.cpp
Remove annoying warnings.
[vlc] / activex / oleinplaceactiveobject.cpp
index 4239a4d1f5e587a6ac91b1f6dc3869bfb045f6f9..11b267227868696d616ea2c8e87500ab0574f347 100644 (file)
@@ -1,74 +1,91 @@
-/*****************************************************************************\r
- * oleinplaceactiveobject.cpp: ActiveX control for VLC\r
- *****************************************************************************\r
- * Copyright (C) 2005 VideoLAN\r
- *\r
- * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
- *****************************************************************************/\r
-\r
-#include "plugin.h"\r
-#include "oleinplaceactiveobject.h"\r
-\r
-using namespace std;\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::GetWindow(HWND *pHwnd)\r
-{\r
-    if( NULL == pHwnd )\r
-        return E_INVALIDARG;\r
-\r
-    if( _p_instance->isInPlaceActive() )\r
-    {\r
-        if( NULL != (*pHwnd = _p_instance->getInPlaceWindow()) )\r
-            return S_OK;\r
-\r
-        return E_FAIL;\r
-    }\r
-    *pHwnd = NULL;\r
-\r
-    return E_UNEXPECTED;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::EnableModeless(BOOL fEnable)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::ContextSensitiveHelp(BOOL fEnterMode)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::TranslateAccelerator(LPMSG lpmsg)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::OnFrameWindowActivate(BOOL fActivate)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::OnDocWindowActivate(BOOL fActivate)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
-STDMETHODIMP VLCOleInPlaceActiveObject::ResizeBorder(LPCRECT prcBorder, LPOLEINPLACEUIWINDOW pUIWindow, BOOL fFrameWindow)\r
-{\r
-    return E_NOTIMPL;\r
-};\r
-\r
+/*****************************************************************************
+ * oleinplaceactiveobject.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 "oleinplaceactiveobject.h"
+
+using namespace std;
+
+STDMETHODIMP VLCOleInPlaceActiveObject::GetWindow(HWND *pHwnd)
+{
+    if( NULL == pHwnd )
+        return E_POINTER;
+
+    *pHwnd = NULL;
+    if( _p_instance->isInPlaceActive() )
+    {
+        if( NULL != (*pHwnd = _p_instance->getInPlaceWindow()) )
+            return S_OK;
+    }
+    return E_FAIL;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::EnableModeless(BOOL fEnable)
+{
+    return S_OK;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::ContextSensitiveHelp(BOOL fEnterMode)
+{
+    return E_NOTIMPL;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::TranslateAccelerator(LPMSG lpmsg)
+{
+    HRESULT hr = S_FALSE;
+    LPOLEOBJECT oleObj;
+    if( SUCCEEDED(QueryInterface(IID_IOleObject, (LPVOID *)&oleObj)) )
+    {
+        LPOLECLIENTSITE clientSite;
+        if( SUCCEEDED(oleObj->GetClientSite(&clientSite)) && (NULL != clientSite) )
+        {
+            IOleControlSite *controlSite;
+            if( SUCCEEDED(clientSite->QueryInterface(IID_IOleControlSite, (LPVOID *)&controlSite)) )
+            {
+                hr = controlSite->TranslateAccelerator(lpmsg,
+                    ((GetKeyState(VK_SHIFT) >> 15) & 1) |
+                    ((GetKeyState(VK_CONTROL) >> 14) & 2) |
+                    ((GetKeyState(VK_MENU) >> 13) & 4) );
+                controlSite->Release();
+            }
+            clientSite->Release();
+        }
+        oleObj->Release();
+    }
+    return hr;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::OnFrameWindowActivate(BOOL fActivate)
+{
+    return S_OK;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::OnDocWindowActivate(BOOL fActivate)
+{
+    return S_OK;
+};
+
+STDMETHODIMP VLCOleInPlaceActiveObject::ResizeBorder(LPCRECT prcBorder, LPOLEINPLACEUIWINDOW pUIWindow, BOOL fFrameWindow)
+{
+    return S_OK;
+};
+